




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精品文档2016全新精品资料-全新公文范文-全程指导写作-独家原创 / 8各种排序方法复杂度总结在C中,排序算法是最基本最常用的算法,不同的排序 算法在不同的场景或应用中会有不同的表现,接下来小编搜 集了各种排序方法复杂度总结,欢迎查看。一、冒泡排序主要思路是:通过交换相邻的两个数变成小数在前大数在后,这样每次遍历后,最大的数就“沉”到最后面了。重复N次即可以使数组有序。代码实现void bubble_sort ( int arr , int len )for (int i = 0; i for (intj = len 1; j = i; j )if ( arrj int temp = arr
2、j;arrj = arrj 1;arrj 1 = temp;冒泡排序改进1:在某次遍历中,如果没有数据交换,说明整个数组已经 有序,因此通过设置标志位来记录此次遍历有无数据交换就 可以判断是否要继续循环。冒泡排序改进2:记录某次遍历时最后发生数据交换的位置,这个位置之 后的数据显然已经有序。因此设置标志位记录每次遍历中最 后发生数据交换的位置可以确定下次循环的范围。二、直接插入排序主要思路是:每次将一个待排序的数组元素,插入到前面已排序的序 列中这个元素应该在的位置,直到全部数据插入完成。类似 扑克牌洗牌过程。代码实现void _sort( int arr, int len )for(int
3、i = 1; i int j =:i 1;int k :=arri;while ( j 1 & k arrj + 1 = arrj;arrj + 1 = k;三、直接选择排序主要思路是:数组分成有序区和无序区,初始时整个数组都是无序 区,每次遍历都从无序区选择一个最小的元素直接放在有序 区最后,直到排序完成。代码实现void select_sort( int arr , int len )for (int i = 0; i int index = i;for ( int j = i + 1; j if ( arrj index = j;if ( index ! = i )int temp =
4、arri;arri = arrindex;arrindex = temp;四、快速排序主要思路是:“挖坑填数+分治法”,首先令i = L;j = R ;将ai 挖出形成打一个坑,称ai为基准数。然后j从后向前找到一个比基准数小的数,挖出来填到ai的坑中,这样aj就形成了一个新的坑,再 i+从前向后找到一个比基准 数大的数填到aj坑中。重复进行这种挖坑填数,直到 i = j。这时ai形成了一个新的坑,将基数填到ai坑中,这样i之前的数都比基准数小,i之后的数都比基准数大。因 此将数组分成两部分再分别重复上述步骤就完成了排序。代码实现void quick_sort ( int arr , int
5、left , int right )if(leftint i =left,j = right,target = arrleft;while(iwhile(itarget )精品文档if(iarri+ = arrj;2016全新精品资料-全新公文范文-全程指导写作-独家原创 / 8while (i i+;if(iarrj = arri;arri = target;quick_sort(arr , left, i 1 );quick_sort(arr , i + 1, right );五、希尔排序主要思路是:先将整个待排元素序列分割成若干个子序列(由相隔某 个“增量”的元素组成的)分别进行直接插入
6、排序,然后依 次缩减增量再进行排序,待整个序列中的元素基本有序(增 量足够小)时,再对全体元素进行一次直接插入排序。由于 希尔排序是对相隔若干距离的数据进行直接插入排序,因此 可以形象的称希尔排序为“跳着插”。六、归并排序主要思路是:当一个数组左边有序,右边也有序,那合并这两个有序 数组就完成了排序。如何让左右两边有序了?用递归!这样8/9( xepuFpue ;ui ” xepuFpejs 屮! jje_duuej 屮! jjb 屮!) ios_e6jeuj piOA !ijje_dujei =F|JJe f !xepu!_peis = f 6 o = !) oj !+(jJe = +|jj
7、e_dujej f) e|iqM !+ijje = +|jje_dujej !)Q|!MM !+ijje = +|jje_dujej esp !+(jJe = +|jje_dujej(!le i 屮!! l + xepuFpiuj = f ”xepuFpejs = i ;ui( xepuFpue ;ui ” xepuFpiuj ;ui ” xepuFpejs;ui jje_duuej 屮! jjb 屮! ) e6jeuu piOA。冒弭北可者犀卑丁北呂精品文档2016全新精品资料-全新公文范文-全程指导写作-独家原创 / 8if (start_index int mid_index =(sta
8、rt_index + end_index ) / 2;merge_sort ( arr , temp_arr , start_index , mid_index );merge_sort ( arr , temp_arr , mid_index + 1 , end_index );merge (arr , temp_arr , start_index , mid_index , end_index );七、堆排序堆排序的难点就在于堆的的插入和删除。堆的插入就是一一每次插入都是将新数据放在数组最后,而从这个新数据的父结点到根结点必定是一个有序的数 列,因此只要将这个新数据插入到这个有序数列中即可。堆的删除就是一一堆的删除就是将最后一个数据的值赋给根结点,然后再从根结点开始进行一次从上向下的调 整。调整时先在左右儿子结点中找最小的,如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025简易兼职劳动合同模板
- 2025私人借款合同范本3
- 2025房产简易买卖合同
- 《科技与创意课件》课件
- 《共享区的悲鸣:课件展示》
- 交感神经链综合征的临床护理
- 2025年承德道路运输从业资格考试系统
- 2025年海口年货运从业资格证考试试题及答案
- 湘中幼儿师范高等专科学校《专业外语阅读》2023-2024学年第二学期期末试卷
- 新疆第二医学院《web渗透与漏洞挖掘课程设计》2023-2024学年第二学期期末试卷
- 各行业消防安全培训课件
- 书店承包经营合同2024版
- 桩基及基坑支护工程技术施工方案(三篇)
- 司法考试2024年知识点背诵版-民法
- 国际标准与国内标准的融合
- DB13-T 2092-2014 河北省特种设备使用安全管理规范
- 公司事故隐患内部报告奖励机制
- (新版)三级广告设计师职业技能鉴定考试题库-上(单选题)
- 2024年耐磨铸件项目规划申请报告样文
- 凝中国心铸中华魂铸牢中华民族共同体意识-小学民族团结爱国主题班会课件
- 2024年AI大模型场景探索及产业应用调研报告-前瞻
评论
0/150
提交评论