标签:
1.自底向上
2.自顶向下
分配排序的基本思想:排序过程无须比较关键字,而是通过"分配"和"收集"过程来实现排序.它们的时间复杂度可达到线性阶:O(n)。 1.箱排序
2.基数排序
1 ///Name:Tree 2 ///Author:JA 3 ///Date:2015-3-14 4 5 6 7 void MergePass(SeqList R,int length) 8 { //对R[1..n]做一趟归并排序 9 int i; 10 for (i = 1; i + 2 * length - 1 <= n; i = i + 2 * length) 11 Merge(R,i,i + length - 1,i + 2 * length - 1); 12 //归并长度为length的两个相邻子文件 13 if (i + length - 1 < n) //尚有两个子文件,其中后一个长度小于length 14 Merge(R, i, i + length - 1, n); //归并最后两个子文件 15 //注意:若i≤n且i+length-1≥n时,则剩余一个子文件轮空,无须归并 16 } //MergePass 17 18 void BucketSon(R) 19 { //对R[0..n-1]做桶排序,其中0≤R[i].key<1(0≤i<n) 20 for (i = 0,i<n; i++) //分配过程. 21 //将R[i]插入到桶B[「n(R[i].key)」]中; //可插入表头上 22 for (i = 0; i<n; i++) //排序过程 23 //当B[i]非空时用插人排序将B[i]中的记录排序; 24 for (i = 0, i < n; i++) //收集过程 25 //若B[i]非空,则将B[i]中的记录依次输出到R中; 26 }
3/14/2015 2:55:05 PM
标签:
原文地址:http://www.cnblogs.com/joeaaron007/p/4337559.html