常用排序演算法總結 五

2021-07-11 19:30:00 字數 1156 閱讀 9207

5 基數排序

基數排序是一種非常獨特的排序方式。它不需要把序列中的元素進行相互比較。只要把原序列進行幾次拆分跟合併就能完成排序。

例如: 乙個序列:12 137 8 7564,先對個位數調整:12 7564 137 8,在對十位數進行調整:08 12 137 7564,對百位調整:008 012 137 7564 ,在對千位進行調整:0008 0012 0137 7564,排序完成。

時間複雜度:o(d*n)

使用基數排序對單鏈表進行排序:

使用乙個指標陣列,把乙個單鏈表按基數鏈結成為10種不同的單鏈表,鍊錶的頭指標放在對應的陣列中。

c語言

//24k丶小煩

#include#include//鍊錶結點

typedef struct node

node, *list;

//構造單鏈表

void createlist(list &phead,int data)

else }

void randnode(list &phead,int length)

}//對桶就行鏈結

void collect(list *list,list &phead)

} temp->next=null;

for(i=0;i<10;i++)

list[i]=null;

}//將鍊錶鏈結到多個桶中

void distribute(list *list,int radix,list &p)

temp=l;

} p=null;

collect(list,p);

}//基數排序

void radixsort(list &list,int count)

{ list array[10];

for(int i=0;i<10;i++)

array[i]=null; //初始化桶

int radix=1;

for(i=0;i

排序演算法總結(五)快速排序

快速排序的思想是選取待排陣列中的乙個數作為中間數 一般是第乙個數 然後將陣列中數與這個中間數進行比較,使中間數左邊的數都小於中間數,中間數右邊的數都大於中間數,這樣中間數就在正確的位置上,然後將左右兩部分再次進行相同的操作,最終會得到乙個有序的陣列。快速排序的演算法平均時間複雜度為o nlogn 最...

常用排序演算法總結

總結些常見的排序演算法,方便以後可以重用。資料量不大,為了表達方便就直接使用了陣列。int data null data new int 1.氣泡排序 氣泡排序,從小到大排序 for int i 0 i data.length i 氣泡排序就是說,排序的過程像水裡往上冒的氣泡一樣,每個數字代表乙個氣...

常用排序演算法總結

常用排序演算法總結 選擇排序 對於長度為n的陣列,選擇排序需要大約n2 2詞比較和n次交換。插入排序 對於隨機排列的長度為n且主鍵不重複的陣列 1 平均情況下,需要 n2 4次比較以及 n2 4次交換。2 最壞情況下,需要 n2 2次比較以及 n2 2次交換 3 最好情況下,需要n 1次比較以及0次...