常用排序算法比较与分析.doc

常用排序算法比较与分析.doc

ID:49771055

大小:263.50 KB

页数:10页

时间:2020-03-04

常用排序算法比较与分析.doc_第1页
常用排序算法比较与分析.doc_第2页
常用排序算法比较与分析.doc_第3页
常用排序算法比较与分析.doc_第4页
常用排序算法比较与分析.doc_第5页
资源描述:

《常用排序算法比较与分析.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、常用排序算法比较与分析 一、常用排序算法简述下面主要从排序算法的基本概念、原理出发,分别从算法的时间复杂度、空间复杂度、算法的稳定性和速度等方面进行分析比较。依据待排序的问题大小(记录数量n)的不同,排序过程中需要的存储器空间也不同,由此将排序算法分为两大类:【内排序】、【外排序】。内排序:指排序时数据元素全部存放在计算机的随机存储器RAM中。外排序:待排序记录的数量很大,以致内存一次不能容纳全部记录,在排序过程中还需要对外存进行访问的排序过程。先了解一下常见排序算法的分类关系(见图1-1)图1-1常见排序算法二、内排序相关算法2.1插入

2、排序核心思想:将一个待排序的数据元素插入到前面已经排好序的数列中的适当位置,使数据元素依然有序,直到待排序数据元素全部插入完为止。2.1.1直接插入排序核心思想:将欲插入的第i个数据元素的关键码与前面已经排序好的i-1、i-2、i-3、…数据元素的值进行顺序比较,通过这种线性搜索的方法找到第i个数据元素的插入位置,并且原来位置的数据元素顺序后移,直到全部排好顺序。直接插入排序中,关键词相同的数据元素将保持原有位置不变,所以该算法是稳定的,时间复杂度的最坏值为平方阶O(n2),空间复杂度为常数阶O(l)。Python源代码:1.#-----

3、--------------------直接插入排序-------------------------------- 2.def insert_sort(data_list): 3. #遍历数组中的所有元素,其中0号索引元素默认已排序,因此从1开始 4. for x in range(1, len(data_list)): 5. #将该元素与已排序好的前序数组依次比较,如果该元素小,则交换 6. #range(x-1,-1,-1):从x-1倒序循环到0 7. for i in range(x-1, -1, -1): 8. #判断:如果符合

4、条件则交换 9. if data_list[i] > data_list[i+1]: 10. temp = data_list[i+1] 11. data_list[i+1] = data_list[i] 12. data_list[i] = temp 2.1.2希尔排序核心思想:是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。希尔排序时间复杂度会比O(n2)好一些,然而,多次插入排序中,第一次插入排序是稳定的,但在不同的插入排序过

5、程中,相同的元素可能在各自的插入排序中移动,所以希尔排序是不稳定的。Python源代码:1.#-------------------------希尔排序------------------------------- 2.def insert_shell(data_list): 3. #初始化step值,此处利用序列长度的一半为其赋值 4. group = int(len(data_list)/2) 5. #第一层循环:依次改变group值对列表进行分组 6. while group > 0: 7. #下面:利用直接插入排序的思想对分组数据

6、进行排序 8. #range(group,len(data_list)):从group开始 9. for i in range(group, len(data_list)): 10. #range(x-group,-1,-group):从x-group开始与选定元素开始倒序比较,每个比较元素之间间隔group 11. for j in range(i-group, -1, -group): 12. #如果该组当中两个元素满足交换条件,则进行交换 13. if data_list[j] > data_list[j+group]: 14. t

7、emp = data_list[j+group] 15. data_list[j+group] = data_list[j] 16. data_list[j] = temp 17. #while循环条件折半 18. group = int(group / 2) 2.2选择排序核心思想:每一趟扫描时,从待排序的数据元素中选出关键码最小或最大的一个元素,顺序放在已经排好顺序序列的最后,直到全部待排序的数据元素排完为止。2.2.1直接选择排序核心思想:给每个位置选择关键码最小的数据元素,即:选择最小的元素与第一个位置的元素交换,然后在剩下的元素

8、中再选择最小的与第二个位置的元素交换,直到倒数第二个元素和最后一个元素比较为止。根据其基本思想,每当扫描一趟时,如果当前元素比一个元素小,而且这个小元素又出现在一个和当前元素相等的元素后面,则

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。