摘要:
第八章 线性时间排序8.2 计数排序这个算法比较简单。计数排序的基本思想就是对每一个输入元素x,确定出小于x的元素个数。然后就可以把x直接放到它的最终输出数组的位置上。例如如果有17个元素小于x,则x旅游属于第18个输出位置。假定输入的日企 数组A[1..n],length[A]=n。另外还需要两个数组:存放排序结果的B[1..n],以及提供临时存储区的C[0..k]。COUNTING-SORT(A, B, k)1 for i ← 0 to k2 do C[i] ← 03 for j ← 1 to length[A]4 do C[A[j]] ← C[A[j]] + 15 for... 阅读全文
摘要:
第七章 快速排序主要分为两个子算法,PARTITION(A, p, r)以A[r]为基准对数组进行一个划分,比A[r]小的放在左边,比A[r]大的放在右边。QUICKSORT(A, p, r)是快速排序的子程序,调用划分程序对数组进行划分,然后递归地调用QUICKSORT(A, p, r),以完成快速排序的过程。快速排序的最差时间复杂度为O(n2),平时时间复杂度为O(nlgn)。最差时间复杂度的情况为数组基本有序的时候,平均时间复杂度为数组的数值分布较为平均的时候。在平时情况下快速排序跟堆排序的时间复杂度都为O(nlgn),但是快速排序的常数项较小,所以要优于堆排序。PARTITION(A, 阅读全文