(25)--第7章 排序-交换类数据结构.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

第8章排序;基本思想:;基本思想:每趟不断将记录两两比较,并按“前小后大”规则交换;

voidbubble_sort(SqListL)

{intm,i,j,flag=1;RedTypex;

m=n-1;

while((m0)(flag==1))

{flag=0;

for(j=1;j=m;j++)

if(L.r[j].keyL.r[j+1].key)

{flag=1;

x=L.r[j];L.r[j]=L.r[j+1];L.r[j+1]=x;//交换

}//endif

m--;

}//endwhile

};设对象个数为n

比较次数和移动次数与初始排列有关;;与初序有关

时间复杂度为O(n2)

空间复杂度为O(1)

是一种稳定的排序方法;对n个不同的关键字由小到大进行冒泡排序,在下列()情况下比较的次数最多。;基本思想:

任取一个元素(如第一个)为枢轴

所有比它小的元素一律前放,比它大的元素一律后放,形成左右两个子表;

对各子表重新选择枢轴元素并依此规则调整,直到每个子表的元素只剩一个,或空表为止;;;如果待排序列中有两条记录或以上

1.找到枢轴记录的最终位置

(一趟划分)

2.对前部分进行快速排序

3.对后部分进行快速排序

;;intPartition(SqListL,intlow,inthigh)

{L.r[0]=L.r[low];pivotkey=L.r[low].key;

while(lowhigh)

{while(lowhighL.r[high].key=pivotkey)--high;

L.r[low]=L.r[high];

while(lowhighL.r[low].key=pivotkey)++low;

L.r[high]=L.r[low];

}

L.r[low]=L.r[0];

returnlow;

};一组记录的关键码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为()。;

某整形数组A的十个元素值分别是6,2,9,7,3,8,4,5,0,试用第一元素中的值6作为枢轴,试写出快速排序第一次分割后A中的结果。;;;;;;;;;;;;;;;;;;;voidQSort(SqListL,intlow,inthigh)

{if(lowhigh)

{pivotloc=Partition(L,low,high);

Qsort(L,low,pivotloc-1);

Qsort(L,pivotloc+1,high)

}

};可以证明,平均计算时间是O(nlog2n)。

实验结果表明:就平均计算时间而言,快速排序是我们所讨论的所有内排序方法中最好的一个。

快速排序是递归的,需要有一个栈存放每层递归调用时参数(新的low和high)。

最大递归调用层次数与递归树的深度一致,因此,要求存储开销为O(log2n)。;最好:划分后,左侧右侧子序列的长度相同

最坏:从小到大排好序,递归树成为单支树,每次划分只得到一个比上一次少一个对象的子序列,必须经过n-1趟才能把所有对象定位,而且第i趟需要经过n-i次关键码比较才能找到第i个对象的安放位置;时间效率:O(nlog2n)—每趟确定的元素呈指数增加

空间效率:O(log2n)—递归要用到栈空间

稳定性:不稳定—可选任一元素为支点。;快速排序方法在()情况下最不利于发挥其长处。;改进;总结

文档评论(0)

177****2883 + 关注
实名认证
文档贡献者

热爱教育,专注于教育领域创作与分享,让我们共同进步。

1亿VIP精品文档

相关文档