几种排序方法Python实现.docxVIP

  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文档。上传文档
查看更多
几种排序方法Python实现

窗体顶端有哪些信誉好的足球投注网站:窗体底端近期文章几种排序方法Python实现docker基础近期评论文章归档2016年十一月分类目录学习笔记 (2) docker (1) 算法 (1) 功能管理站点登出文章RSS评论RSSWordPress.org标签几种排序方法Python实现插入排序原理:将初始序列中的第一个元素作为一个有序序列,然后将剩下的 n-1 个元素按关键字大小依次插入该有序序列,每插入一个元素后依然保持该序列有序,经过 n-1 趟排序后使初始序列有序。其他说明:插入排序在最好的情况下时间复杂度为Θ(n),比较次数为(n-1)次,移动元素次数是2(n-1);最坏的情况下时间复杂度为Θ(n^2);插入排序是稳定的排序算法。def ins_sort(list):? ? j =1? ? n =0? ? m =0? ? while j lt;len(list):? ? ? ? key =list[j]? ? ? ? i = j - 1? ? ? ? while i gt; -1andlist[i] lt; key:? ? ? ? ? ? list[i+1]=list[i]? ? ? ? ? ? list[i]= key? ? ? ? ? ? i = i - 1? ? ? ? ? ? n = n + 1? ? ? ? m = m + 1? ? ? ? j = j + 1? ? ? ? # print(list)? ? print(list,插入排序1---内部循环次数:, n,外部循环次数:, m)def ins_sort_2(list):? ? n =0? ? m =0? ? for j inrange(1,len(list)):? ? ? ? key =list[j]? ? ? ? i = j - 1? ? ? ? while i gt; -1andlist[i] lt; key:? ? ? ? ? ? list[i+1]=list[i]? ? ? ? ? ? list[i]= key? ? ? ? ? ? i = i - 1? ? ? ? ? ? # print(list)? ? ? ? ? ? n = n + 1? ? ? ? # print(result: ,list)? ? ? ? m = m + 1? ? print(list,插入排序2---内部循环次数:, n,外部循环次数:, m)?选择排序原理:将初始序列(A[0]~A[n-1])作为待排序序列,第一趟在待排序序列(A[0]~A[n-1])中找到最小值元素,将其与第一个元素A[0]交换,这样子序列(A[0])已经有序,下一趟在排序在待排序子序列(A[1]~A[n-1])中进行。第i趟排序在待排序子序列(A[i-1]~A[n-1])中找到最小值元素,与该子序列中第一个元素A[i-1]交换。经过 n-1 趟排序后使得初始序列有序。其他说明:选择排序的最好、最坏和平均情况的时间复杂度都为Θ(n^2),而且它还需交换元素(n-1)次和移动元素3(n-1)次;它是不稳定的排序算法。def sel_sort(l):? ? n =0? ? m =0? ? for j inrange(len(l)-1):? ? ? ? min_key = j? ? ? ? for i inrange(j + 1,len(l)):? ? ? ? ? ? if l[i] gt; l[min_key]:? ? ? ? ? ? ? ? min_key = i? ? ? ? ? ? # print(内部循环:,l,(n + 1))? ? ? ? ? ? n = n + 1? ? ? ? key = l[j]? ? ? ? l[j]=l[min_key]? ? ? ? l[min_key]=key? ? ? ? # print(外部循环:, l,m + 1)? ? ? ? m = m + 1? ? print(l,选择排序---内部循环次数:, n,外部循环次数:, m)冒泡排序原理:第一趟在序列(A[0]~A[n-1])中从前往后进行两个相邻元素的比较,若后者小,则交换,比较 n-1 次;第一趟排序结束,最大元素被交换到A[n-1]中,下一趟排序只需要在子序列(A[0]~A[n-2])中进行;冒泡排序最多进行 n-1 趟。基本的冒泡排序可以利用旗标的方式稍微减少一些比较的时间,当寻访完序列后都没有发生任何的交换动作,表示排序已经完成,而无需再进行之后的比较与交换动作。其他说明:冒泡排序最好的情况下只需进行一趟排序,(n-1)次比较,此时的时间复杂度为O(n),无需移动元素;最坏的情况下进行 n-1 趟排序,时间复杂度为O(n2);冒泡排序是稳定的排序算法。def bubble_sort(l):? ? length

文档评论(0)

wnqwwy20 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档