预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共53页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

会计学一般情况下,对排序的定义(dìngyì)为:假设含有n个记录的序列为:当待排序记录中的关键字(i=1,2,…,n)都不相同时,则任何一个记录的无序序列经排序后得到的结果是唯一(wéiyī);若待排序的序列中存在两个或两个以上关键字相等的记录,则排序所得到的结果不唯一(wéiyī)。根据涉及的存储器不同,将排序方法分为两大类:1)内部排序:在排序进行的过程(guòchéng)中不使用计算机外部存储器的排序过程(guòchéng)。2)外部排序:在排序进行的过程(guòchéng)中需要对外存进行访问的排序过程(guòchéng)。逐步扩大(kuòdà)记录的有序序列长度排序的方法大致有一下几类:按排序过程中所需的工作量来分:1)简单的排序方法(fāngfǎ)时间复杂度O(n2)2)先进的排序方法(fāngfǎ)时间复杂度O(nlogn)3)基数排序时间复杂度O(d·n)10.2插入排序由此实现一趟插入排序的步骤为:1)在R[1..i-1]中查找(cházhǎo)R[i]的插入位置,即确定j(0≤j<i)使得R[1..j].key≤R[i].key<R[j+1..i-1].key2)将R[j+1..i-1]中的记录后移一个位置;3)将R[i]插入到j+1的位置。算法10.1voidInsertPass(SqList&L,inti){//已知L.r[1..i-1]中的记录已按关键字非递减的顺序有序排列,//本算法实现将L.r[i]插入其中,并保持(bǎochí)L.r[1..i]中记录按关键字非//递减顺序有序L.r[0]=L.r[i];//复制为哨兵for(j=i-1;L.r[0].key<L.r[j].key;--j)L.r[j+1]=L.r[j];//记录后移L.r[j+1]=L.r[0];//插入到正确位置}//InsertPass具体做法不同可分为以下几种(jǐzhǒnɡ)插入排序方法:10.2.1直接(zhíjiē)插入排序最好的情况(关键字记录在序列(xùliè)中顺序有序)待排记录序列状态10.2.2折半(zhébàn)插入排序VoidBInsertSort(SqList&L){//对顺序表L进行折半插入(chārù)排序for(i=2;i<=L.length;++i){L.r[0]=L.r[i];//将L.r[i]暂存到L.r[0]low=1;high=i-1;//折半查找插入(chārù)的位置while(low<=high){m=(low+high)/2;if(L.r[0].key<L.r[m].key)high=m-1;elselow=m+1;}//whilefor(j=i-1;j>=high+1;--j)L.r[j+1]=L.r[j];//记录后移L.r[high+1]=L.r[0];//插入(chārù)}//for}//BInserSort10.2.3表插入排序表插入排序的过程(guòchéng)举例完成表插入(chārù)之后,调整重新排列10.2.4希尔排序(páixù)希尔排序(páixù)举例10.3交换(jiāohuàn)排序法起泡排序(páixù)的过程:例如(lìrú):如动画flash10-3-210.3.2快速(kuàisù)排序一趟快速(kuàisù)排序的具体做法:例如(lìrú),关键字序列(52,49,80,36,14,75,58,97,23,61)经第1趟快速排序之后为(23,49,14,36)52(75,58,97,80,61)经第2趟快速排序之后为(14)23(49,36)52(61,58)75(80,97)经第3趟快速排序之后为(14,23,36,49,52,58,61,75,80,97)10.4选择(xuǎnzé)排序法时间性能:对n个记录的关键字进行简单选择排序(páixù),所需进行的关键字比较次数总计为选择排序的主要操作是进行关键字的比较,改进简单选择排序应从(yīnɡcónɡ)如何减少比较次数出发考虑。即利用前次比较信息减少以后各趟选择排序中所比较次数。就可以提高选择排序的效率。如体育比赛中的锦标赛便是一种选择排序(树型选择排序)。由于含有(hányǒu)n个结点的二叉树的深度为[log2n]+1则在树型选择排序中,除了最小关键字外,没选择一个次小关键字仅需要进行[log2n]次比较,因此,它的时间复杂度为O(nlogn),但是这种排序方法所需辅助空间较多,和最大值进行多余的比较等缺点。威洛姆斯(J.willioms)在1964年提出了另一种形式的选择排序——堆排序。10.4.2堆排序/利用堆的特性(tèxìng)进行的排序方法即为“堆排序”其排序过程如下:假设待排关键字序列为:{34,