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次...