1、桶排序
定義:時間複雜度特別大,較為雞肋,在給定的小範圍內可以進行進行對照般的排序。
理解,就是把範圍內的資料按照範圍乙個個放到由範圍標號的桶裡,然後按照每個桶裡的數量列印。
**實現如下:
#include
#include
#include
int main()
for(i=1000;i>=0;i--)
for(j=1;j<=book[i];j++)//出現了幾次i就列印幾次,若未出現,則book[i]=0,j=1,不滿足,所以不輸出。
cout
0;}
2、氣泡排序
定義:每次找相鄰的兩個量,如果它們的順序不滿足要求就交換。
理解:複雜度較低但比較麻煩,從名字理解即可,冒泡冒泡,像水中的氣泡一樣向上浮動,一次次比較。詳情看**。
實現**如下:
#include
#include
#include
using
namespace
std;
int main()
}for(i=1;i<=n;i++)//輸出
cout
0; }
3、快排
定義:從數列的頭與尾分別找到乙個比開始值小的和大的,然後交換。若兩頭相遇則與初始值交換,再從中間將佇列一分為二,形如二分法。
理解:在此不過多解釋,有一種東西叫sort使用方式如下:
用#includesort即可使用。
sort(begin,end),表示乙個範圍,例如:
int _tmain(int argc, _tchar* argv)
,i; for(i=0;i
<20;i++)
cout<[i]
<20);
for(i=0;i
<20;i++)
cout<[i]
0;}
總結:
大體應該就如此了,排序其實並不是太單一,在很多的題裡面我們用到的排序很廣泛,但例如我們比較乙個值,然後它的其他屬性需要跟著這個東東變,那麼我們還是需要定義乙個結構體,然後用sort或者用在排序裡面實現,sort需定義乙個cmp的自定義函式,定義格式簡寫:
int cmp(const.node&a,const node&b)
{return a.s
無中生有之突擊 ( ) 更多演算法 一)
又開始了哈 最小生成樹 何為最小生成樹呢?我們有很多路可以選,可有有很多種方案,然而如何達到乙個最低值,而取消掉那些多餘的路呢?這就是它的作用所在!演算法分析 首先我們要讓 個頂點的圖連通,那麼至少需要 條邊。既然我們想讓邊的總長度之和最短,我們自然可以首先選擇最短的邊,直到選擇了 條邊為止,此時有...
第0章 無中生有
每個學計算機的同學都想寫乙個作業系統,每個學儲存的同學都想開發一款磁碟陣列。每當看到 作業系統 四個字我就衝動,那是大腦皮層的強烈反應,無奈能力不濟,繞了一大圈都沒入門。今年5月剛好沒啥正事,所以打算重整旗鼓,寫乙個非常簡單的os,想用來敲開 作業系統 這個大門。這個系列的文章只記錄開發過程的點滴經...
Go語言列舉 無中生有
go語言中沒有列舉這種資料型別的,但是可以使用const配合iota模式來實現,如果要為列舉新增方法的話還涉及到型別的定義,以及為新建型別新增方法。所以在開始介紹實現go語言的列舉實現之前,我們先來看看型別別名 在go1.9版本新增的功能,主要用於 公升級 遷移中型別的相容性問題 和型別定義的區別。...