如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第八章内排序23for(intj=0;j<r;j++)//初始化r个队列count[Array[i]]++;inti,j,k;::Distribute(Record*Array,intfirst,inti,intr,StaticQueue*queue){Array[last].next=first;0123456789先对高位kd-1进行桶式排序,将序列分成若干个桶中for(i=0;i<n;i++)//统计每个取值出现的次数inti,j,k;count[j]=count[j-1]+count[j];电话:62754785第二趟收集(让队尾指针t[i]链接到下一非空队首指针h[i+1])template<classRecord>voidBucketSort(RecordArray[],intn,intm){int*TempArray=newRecord[n];//临时数组int*count=newint[m];//小于或等于i的元素个数inti;for(i=0;i<n;i++)//把序列复制到临时数组TempArray[i]=Array[i];for(i=0;i<max;i++)//所有计数器初始都为0count[i]=0;8对m的讨论10111213141516171819202123242526270123456789tail=first;//first为子序列的尾部叶结点的最小深度就是最佳情况下的最小比较次数//first为静态链中的第一个记录,i为第i个排序码,r为基数TempArray[count[k]]=Array[j];for(i=0;i<max;i++)//所有计数器初始都为0count[i]=0;Bucketsorting,最简单的分配排序高位优先法(MSD,MostSignificantDigitfirst)::Distribute(Record*Array,intfirst,inti,intr,StaticQueue*queue){MSD方法思路:先设立4个花色“箱”,将全部牌按花色分别归入4个箱内(每个箱中有13张牌);count[j]=count[j-1]+count[j];template<classRecord>for(inta=0;a<i;a++)先对高位kd-1进行桶式排序,将序列分成若干个桶中可以按千、百、十、个位数字依次进行4次桶式排序0123456782930323436373839t[0]t[1]t[2]t[3]t[4]t[5]t[6]t[7]t[8]t[9]7各种排序算法的理论和实验时间代价int*TempArray=newRecord[n];//临时数组电话:62754785//n为数组长度,d为排序码数,r为基数面值:2<3<4<5<6<7<8<9<10<J<Q<K<A判定树的深度为log(n!)是指已知的最快算法所达到的最佳渐进效率{returnrand()%(n);}先对高位kd-1进行桶式排序,将序列分成若干个桶中面值:2<3<4<5<6<7<8<9<10<J<Q<K<A原始输入数组R的长度为ncount[j]=count[j-1]+count[j];//返回一个0到n之间的随机整数值//存放r个桶的静态队列while(k<r-1&&queue[k].4142434445再见…