利用雜湊的思想,直接定值法。開闢最大值到最小值範圍的陣列,把待排序陣列裡的資料取模後在新陣列對應的位置進行標記,新陣列裡存的值是引用計數,統計重複的個數,下標加上最小值為對應舊資料的大小。
利用雜湊的思想,先對個位排序;個位有序後,在對十位排序;十位有序後再對更高位排序,把最大數的位數排完,整個序列就有序了。
如對個位排序
對每一位統計的方法是一樣的, 然後統計基數 ,對每乙個基數字用對個位排序的方法進行排序。
void
radixsort
(int* a, size_t n)
;//統計同一位上相同的資料出現的次數
int start[10] = ; //統計同一位上不相同的資料在陣列上的第乙個起始位置
int base = 10;
int range = 1;
for (int i = 1; i < n; i++) }
int* tmp = new
int[n];
base = 1;
for (int j = 0;jfor (int i = 0; i < n; i++)
for (int i = 1; i < n; i++)
for (int i = 0; i < n; i++)
for (int i = 0; i < n; i++)
base *= 10;
} delete tmp;
}
o(n*基數)
只能對正整數排序
非比較排序2 基數排序
一 基數排序 穩定排序 按位排序 從低位 個位 到高位,取序列中元素相應位數字計數排序 c 供radixsort用的計數排序 void countsort1 vector sequence,vectorvec digit,int max k 9 void radixsort vector seque...
非比較排序 計數排序
計數排序 count sort 是乙個非基於比較的排序演算法,該演算法於1954年由 harold h.seward 提出。它的優勢在於在對一定範圍內的整數排序時,它的複雜度為 n k 其中k是整數的範圍 快於任何比較排序演算法。計數排序的思想類似於雜湊表中的直接定址法,在給定的一組序列中,先找出該...
計數排序 非比較排序
1.統計相同元素出現的個數 2.根據統計結果將序列 到原來的序列中 整體思路如下圖 判斷最大最小值的差值 int a newint count 開空間 memset a,0 sizeof int count 記得將原空間清空 for int i 0 i n i int j 0 int q 0 whi...