任意一种比较排序算法,在最坏情况下的运行时间下限是Ω(nlgn)
计数排序
假设n个输入元素中的每一个都是介于0到k之间的整数,k为某个整数,当k=O(n)时,计数排序的运行时间为Θ(n)
1 //输入数组A[1..n],存放排序结果数组B[1..n],临时存储区C[0..k] 2 COUNTING-SORT(A,B,k) 3 for i←0 to k 4 do C[i]←0 5 for j←1 to length[A] 6 do C[A[j]]←C[A[j]]+1 7 for i←1 to k 8 do C[i]←C[i]+C[i-1] 9 for j←length[A] downto 1 10 do B[C[A[j]]]←A[j] 11 C[A[j]]←C[A[j]]-1
基数排序
假设长度为n的数组A中,每个元素都有d位数字,其中第1位是最低位,第d位是最高位
1 RADIX-SORT(A,d) 2 for i←1 to d 3 do use a stable sort to sort array A on digit i
桶排序
假设输入由一个随机过程产生,该过程将元素均匀的分布在区间[0,1)上
1 BUCKET-SORT(A) 2 n←length[A] 3 for i←1 to n 4 do insert A[i] into list B[floor(nA[i])] 5 for i←0 to n-1 6 do sort list B[i] with insertion sort 7 concatenate the lists B[0],B[1]...B[n-1] together in order
时间: 2024-10-20 00:10:38