![[计算机]算法时间复杂度分析.doc_第1页](http://file.renrendoc.com/FileRoot1/2019-1/5/4aa67e85-f677-474a-b53c-395e82e9c071/4aa67e85-f677-474a-b53c-395e82e9c0711.gif)
![[计算机]算法时间复杂度分析.doc_第2页](http://file.renrendoc.com/FileRoot1/2019-1/5/4aa67e85-f677-474a-b53c-395e82e9c071/4aa67e85-f677-474a-b53c-395e82e9c0712.gif)
![[计算机]算法时间复杂度分析.doc_第3页](http://file.renrendoc.com/FileRoot1/2019-1/5/4aa67e85-f677-474a-b53c-395e82e9c071/4aa67e85-f677-474a-b53c-395e82e9c0713.gif)
全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
冒泡排序算法:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。void bubble_sort(int *x, int n) int j, k, h, t; for (h=n-1; h0; h=k) /*循环到没有比较范围*/ for (j=0, k=0; j *(x+j+1) /*大的放在后面,小的放到前面*/ t = *(x+j); *(x+j) = *(x+j+1); *(x+j+1) = t; /*完成交换*/ k = j; /*保存最后下沉的位置。这样k后面的都是排序排好了的。*/ 时间复杂性的分析:比较的时间耗费 移动的时间耗费若记录序列的初始状态为正序,则冒泡排序过程只需进行一趟排序,在排序过程中只需进行n-1次比较,且不移动记录;反之,考虑最坏情况,若记录序列的初始状态为逆序,则有第一次进行n-1次比较,n-1次移动第二次进行n-2次比较,n-2次移动第三次进行n-3次比较,n-3次移动。第n-1次进行1次比较,1次移动共需进行1+2+3+。+n-1=n(n-1)/2次比较和记录移动。因此冒泡排序总的时间复杂度为O(n*n)。堆排序算法:堆积排序(Heapsort)是指利用堆积树(堆)这种资料结构所设计的一种排序算法,可以利用数组的特点快速定位指定索引的元素。调整堆算法: 12 34 5 6 7H h 初始化操作:构造为初始堆; 每一趟排序的基本操作:1 最大堆堆顶V0具有最大的排序码, 将V0与 Vn-1对调, 把具有最大排序码的对象交换到最后2 再对前面的n-1个对象, 调整堆, 具有次最大排序码的对象又上浮到V0位置。3 再对调V0和Vn-2堆排序对应程序代码:/ array是待调整的堆数组,i是待调整的数组元素的位置,length是数组的长度 void HeapAdjust(int array, int i, int nLength)/本函数功能是:根据数组array构建大根堆 int nChild; int nTemp; for (nTemp = arrayi; 2 * i + 1 nLength; i = nChild) / 子结点的位置*(父结点位置)+ 1 nChild = 2 * i + 1; / 得到子结点中较大的结点 if (nChild arraynChild) +nChild; / 如果较大的子结点大于父结点那么把较大的子结点往上移动,替换它的父结点 if (nTemp = 0; -i) HeapAdjust(array, i, length); / 从最后一个元素开始对序列进行调整,不断的缩小调整的范围直到第一个元素 for (int i = length - 1; i 0; -i) / 把第一个元素和当前的最后一个元素交换, / 保证当前的最后一个位置的元素都是在现在的这个序列之中最大的 Swap(&array0, &array); / 不断缩小调整heap的范围,每一次调整完毕保证第一个元素是当前序列的最大值 HeapAdjust(array, 0, i); 时间复杂性的分析:建堆的时间耗费 排序的时间耗费排序的时间耗费:结点个数高度 比较次数 j=2 log2 + 1 = 2 log2j=3 log3 + 1 = 2 log3j=4 log4 + 1 = 2 log4 。j=n-1log(n-1) + 1= 2 log(n-1) 所以:T(n)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 造纸工艺参数自适应控制-洞察及研究
- 资源与运营管理形成性考核试题
- 新型光致变色材料的合成与性能研究-洞察及研究
- 水资源保护与管理-第2篇-洞察及研究
- 溶洞洞穴地质力学-洞察及研究
- 矿物供应链物流效率提升-洞察及研究
- 神经发育性精神疾病的遗传学-洞察及研究
- 供应链金融支付安全控制-洞察及研究
- 人口政策对劳动力市场影响-洞察及研究
- 语音控制技术在机器人技术中的应用研究-洞察及研究
- 2025-2030中国环氧浆料市场供需现状与未来前景趋势洞察报告
- 【永州】2024年湖南永州冷水滩区事业单位招聘工作人员55人笔试附带答案详解
- (高清版)DB13∕T 5222-2020 向列相热致液晶单体纯度的测定 气相色谱法
- 医用耗材退换货管理制度
- 微观经济学(第九版)中文教师手册
- 2025-2030中国慢性肾脏病(CKD)行业市场发展趋势与前景展望战略研究报告
- 洗护系列产品培训
- 演出经纪人员资格通关秘籍2025
- 国家基本药物知识培训
- 海绵城市会议纪要
- 房产赠与合同标准格式合同
评论
0/150
提交评论