排序算法效率分析及总结

上传人:仙*** 文档编号:84377045 上传时间:2022-05-03 格式:DOC 页数:5 大小:116KB
收藏 版权申诉 举报 下载
排序算法效率分析及总结_第1页
第1页 / 共5页
排序算法效率分析及总结_第2页
第2页 / 共5页
排序算法效率分析及总结_第3页
第3页 / 共5页
资源描述:

《排序算法效率分析及总结》由会员分享,可在线阅读,更多相关《排序算法效率分析及总结(5页珍藏版)》请在装配图网上搜索。

1、C 语言主流 的 排序算法效率分析及总结 班级:计科二班作者: XXX日期: 2016-3-29工作:算法搜集及程序组合,结论总结。同组者:刘文星期二工作:程序测试,时间记录以及程序演示这次我们组主要搜集了冒泡排序算法,简单排序算法,直接插入排序算法,希尔排序算法,堆排序 算法,快 速排序算法六种常见的排序算法,并对它们的运行效率作了一个简单的测试与分析。A 冒泡排序 算法思想简单描述: 在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较 和调整, 让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反 时,就将它们互换。 冒

2、泡排序是稳定的。算法时间复杂度: O(N2) 下面我们来测试一下不同数据量的排序时间: 这是 200 个乱序随机数:冒泡排序运行时间为毫秒这是 1000 个乱序随机数: 冒泡排序运行时间为毫秒 这是 5000 个乱序随机数: 冒泡排序运行时间为毫秒 这是 20000 个乱序随机数: 冒泡排序运行时间为毫秒 从不同数据量的纵向分析来看, 1,在冒泡排序算法里,随着数据量的增加,其运行时间也会越来越长。 2,在两百个数据的时候,其运行时间少到忽略不计,即运算瞬间完成。这说明冒泡排序在处理小数据量的时候还是很给力的3,当处理的数据量从 5000 提到 20000的时候,冒泡排序的运行时间发生了质的增

3、加。 从几十毫秒到 几千毫秒,运行时间大大增加,从这里可见,冒泡排序在处理稍微大的数据的时候便已经显现岀 了力不从 心感,我个人感觉已不大适用。B 简单选择排序算法思想简单描述:在要排序的一组数中,选岀最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与 第二个位 置的数交换,如此循环到倒数第二个数和最后一个数比较为止。选择排序是不稳定的。时间复杂度: O(N2)下面我们依然来测试一下简单选择排序在不同数据量的运行时间:这是 200 个乱序随机数:简单选择排序运行时间:毫秒这是 1000 个乱序随机数:简单选择排序运行时间:毫秒这是 5000 个乱序随机数:简单选择排序运行时间:毫

4、秒这是 20000 个乱序随机数: 简单选择排序运行时间:毫秒 从不同数据量的纵向分析来看,1,其运行时间随着数据量的增加而增加2,简单选择排序同冒泡排序一样,在处理像200 个这样的小数据量的时候,其运行时间可以忽略不计,即瞬间完成3,当数据量从 5000 提高到 20000 的时候,其运行时间也是提高了几十倍。C 直接插入排序算法思想简单描述:在要排序的一组数中,假设前面(n-1) n=2 个数已经是排好顺序的,现在要把第 n 个数插到前面的有序数中,使得这 n 个数也是排好顺序的。如此反复循环,直到全部排好顺序。直接插入排序是稳定的。算法时间复杂度: O(N2) 下面我们来简单测试一下直

5、接插入排序在不同数据量下的运行时间: 这是 200 个乱序随机数:直接插入排序运行时间:毫秒这是 1000 个乱序随机数: 直接插入排序运行时间:毫秒 这是 5000 个乱序随机数: 直接插入排序运行时间:毫秒 这是 20000 个乱序随机数: 直接插入排序运行时间:毫秒 从不同数据量的纵向分析来 看: 直接插入排序在想 200 个这样的小数据量的时候执行非常快,效率高。当数据量增加的 20000 的时候,运行时间会猛增几十倍,效率呈现下降趋势。D 希尔排序算法思想简单描述:在直接插入排序算法中,每次插入一个数,使有序序列只增加 1 个节点,并且对插入下一个数没有提供任 何帮助。如果比较相隔较

6、远距离 (称为增量 ) 的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除多个元素交换。算法先将要排序的一组数按某个增量d分成若干组,每组中记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量对它进行,在每组中再进行排序。当增量减到1 时,整个要排序的数被分成一组,排序完成。希尔排序是不稳定的。希尔排序时间复杂度:0 (平均)最好的0(N)最差的0(N2) 下面我们来简单测试一下希尔排序在不同数据量的运行时间情况: 这是 200 个乱序随机数:希尔排序运行时间为:毫秒这是1000个乱序随机数:希尔排序的运行时间:毫秒这是5000个乱序随机数希尔排序的运行时间:毫秒 这是2

7、0000个乱序随机数: 希尔排序的运行时间:毫秒 从不同数据量的纵向分析来看:20000个数据的时候也仅仅只是5毫从200个到20000量的随机数,希尔排序运行的时间都是非常快的,效率极高 秒,这说明希尔排序在处理大数据的能力上非常优越。E 堆排序算法思想简单描述: 堆排序是一种树形选择排序,是对直接选择排序的有效改进。堆的定义如下:具有 n 个元素的序列 ( h1,h2,.,hn), 当且仅当满足 ( hi=h2i,hi=2i+1 ) 或( hi=h2i,hi=2i+1 ) (i=1,2,.,n/2)时称之为堆。在这里只讨论满足前者条件的堆。由堆的定义可以看岀,堆顶元素 ( 即第一个元素)

8、必为最大项。完全二叉树可以很直观地表示堆的结构。堆顶为根,其它为左子树、右子树。初始时把 要排序的 数的序列看作是一棵顺序存储的二叉树,调整它们的存储顺序,使之成为一个堆,这时堆的根节 点的数最大。然后 将根节点与堆的最后一个节点交换。然后对前面 (n-1) 个数重新调整使之成为堆。依此类 推,直到只有两个节点的堆,并对它们作交换,最后得到有 n 个节点的有序序列。从算法描述来看,堆排 序需要两个过程,一是建立堆,二是堆顶与堆的最后一个元素交换位置。所以堆排序有两个函数组成。一 是建堆的 渗透函数,二是反复调用渗透函数实现排序的函数。堆排序是不稳定的。算法时间复杂度: O(nlog2n) 。下

9、面我们测试一下堆排序在不同数据量的运行效果:这是 200 个乱序随机数: 堆排序运行时间:毫秒 这是 1000 个乱序随机数: 堆排序运行时间:毫秒 这是 5000 个乱序随机数: 堆排序运行时间:毫秒 这是 20000 个乱序随机数: 堆排序运行时间:毫秒 从不同数据量的纵向分析来看: 堆排序不禁在处理小数据的时候效率非常高,就算处理几万个数据,也几乎是瞬间完成。 从 200 到 20000 个数据的运行结果来看,堆排序在处理大数据的能力上还是很强的。 F 快速排序 算法思想简单描述: 快速排序是对冒泡排序的一种本质改进。它的基本思想是通过一趟扫描后,使得排序序列的长度能大幅度 地减少。 在

10、冒泡排序中,一次扫描只能确保最大数值的数移到正确位置,而待排序序列的长度可能只减少 1。快速排序通过一趟扫描, 就能确保某个数 ( 以它为基准点吧 )的左边各数都比它小,右边各数都比它大。 然后又用同样的方法处理它左右两边的数,直到基准点的左右只有一个元素为止。显然快速排序可以用递 归实现, 当然也可以用栈化解递归实现。快速排序是不稳定的。最理想情况算法时间复杂度: O(nlog2n) ,最坏 O(n2) 下面我们测试一下快速排序在不同数据量的运行情况: 这是 200 个乱序随机数:快速排序运行时间毫秒算法。单选择排这是 1000 个乱序随机数: 快速排序运行时间:毫秒 这是 5000 个乱序

11、随机数: 快速排序运行时间毫秒 这是 20000 个乱序随机数: 快速排序运行时间毫秒 从不同数据量纵向分析来看: 随着数据量的增加,快速排序运行的时间也越来越长 在处理小数据量的时候,快速排序效率非常高 在处理大数据的时候,运行时间所花的也不是很长,是可以接受的,个人认为快速排序是一种比较平衡的 横向分析这 6 种排序算法的效率:在处理小数据量的时候, 6 中排序算法的效率都是非常可观的,都是可以接受的。 但根据算法具体来看,当数据本身信息量较大时,直接插入排序所需的记录移动操作较多,不宜采用。简 序会更好。当数据量较大的时候,应采用时间复杂度0或O(nlog2n),即希尔排序,堆排序,快速排序都是极好的当记录本身信息量较大时,可以采用链表存储。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!