如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
会计学1、插入排序(直接插入排序、希尔排序)2、交换(jiāohuàn)排序(起泡排序、快速排序)3、选择排序(简单选择排序、堆排序)4、归并排序、基数排序排序:将数据(shùjù)元素的一个任意序列,重新排列成一个按关键字有序的序列。设Ki=Kj(1≤i≤n,1≤j≤n,i≠j),且在排序前的序列中Ri领先于Rj(即i<j)。若在排序后的序列中Ri仍领先于Rj,则称所用的排序方法(fāngfǎ)是稳定的;反之,则称所用的排序方法(fāngfǎ)是不稳定的。内部排序(páixù)和外部排序(páixù)9.2插入排序插入排序举例(jǔlì):template<classKeyType,classOtherType>voidInsert(ElemType<KeyType,OtherType>elem[],intn){//在数组elem中作插入排序for(inti=1;i<n;i++){//第i趟插入排序for(intj=i;j>0&&elem[j].key<elem[j-1].key;j--){//将比elem[j]大的元素交换(jiāohuàn)到后面Swap<KeyType,OtherType>(elem[j],elem[j-1]);}}}T(n)=O(n²)9.2.2希尔排序(缩小(suōxiǎo)增量排序)0123456789(1)21254925*160821--25*25--1649--08希尔排序(páixù)特点:for(inti=n-1;i>0;i--){for(intj=0;j<i;j++){if(elem[j].key>elem[j+1].key)elem[j]elem[j+1]}}冒泡排序的时间(shíjiān)性能分析一般(yībān)取第一个记录3、快速(kuàisù)排序13解决方法:对分割得到(dédào)的两个子序列递归地执行快速排序。voidQSort(elem[],intlow,inthigh){//对顺序(shùnxù)表L中的子序列L.r[low..high]进行快速排序if(low<high){//长度大于1}}//QSort快速(kuàisù)排序的时间分析(1)21254925*16089.5选择(xuǎnzé)排序例for(j=i+1;j<n;j++)if(elem[j].key<elem[k].key)k=j;(1)21254925*16089.5.2堆排序堆的定义(dìngyì):例(96,83,27,38,11,09)堆排序:例子:关键字序列为42,13,91,23,24,16,05,88,n=8,故从第四个结点开始(kāishǐ)调整42424291筛选算法:(假设r[k]的左右子树均为堆,将以r[k]为根的完全二叉树建成大顶堆)voidSift(Recordr[],intk,intm){i=k;j=2*i;//置i为要筛选的结点,j为i的左孩子(háizi)while(j<=m)//筛选还没有进行到叶子结点{if(j<m&&r[j].key<r[j+1].key)j++;//比较i的左、右孩子(háizi),j为较大者if(r[i].key>r[j].key)break;//根结点已经大于左、右孩子(háizi)中的较大者else{r[i]←→r[j];//将根结点与结点j交换i=j;j=2*i;//被筛结点位于原来结点j的位置}}}上述算法只是对一个指定的结点进行调整。有了这个算法,则将初始的无序(wúxù)区r[1]到r[n]建成一个大顶堆,可用以下语句实现:9113(3)重建(zhònɡjiàn)的堆r[1]到r[7]05(5)重建(zhònɡjiàn)的堆r[1]到r[6](6)第三趟排序(páixù)之后(7)重建(zhònɡjiàn)的堆r[1]到r[5](8)第四趟排序(páixù)之后(9)重建(zhònɡjiàn)的堆r[1]到r[4](10)第五(dìwǔ)趟排序之后(11)重建(zhònɡjiàn)的堆r[1]到r[3](12)第六趟排序(páixù)之后(13)重建(zhònɡjiàn)的堆r[1]到r[2](14)第七趟排序(páixù)之后堆排序算法(suànfǎ):voidHeapSort(Recordr[],intn){for(i=n/2;i>=1;i--)Sift(r,i,n);//初始建堆,从最后一个非终端结点至根结点进行筛选for(i=1;i<n;i++)//重复执行移走堆顶及重建堆的操作{r[1]←→r[n-i+1];Sift(r,1,ni);}}堆排序的时间(shíjiān)复杂度:将两个或两个以上(y