作家
登录

常用排序算法比较与分析

作者: 来源: 2017-04-27 15:03:33 阅读 我要评论

 range(i-group, -1, -group): 
  •  #如不雅该组傍边两个元素知足交换前提,则进行交换 
  •  if data_list[j] > data_list[j+group]: 
  •  temp = data_list[j+group
  •  data_list[j+group] = data_list[j] 
  •  data_list[j] = temp 
  •  #while轮回前提折半 
  •  group = int(group / 2) 
  • 2.3.1 冒泡排序

    2.2 选择排序

    核心思惟:每一趟扫描时,大年夜待排序的数据元素中选出关键码最小或最大年夜的一个元素,次序放在已经排好次序序列的最后,直到全部待排序的数据元素排完为止。

    2.2.1 直接选择排序

    核心思惟:给每个位制揭捉?择关键码最小的数据元素,即:选择最小的元素与第一个地位的元故旧换,然后在剩下的元素中再选择最小的与第二个地位的元故旧换,直到倒数第二个元素和最后一个元素比较为止。

    根据其根本思惟,每当扫描一趟时,如不雅当前元素比一个元素小,并且这个小元素又涌如今一个和当前元素相等的元素后面,则它们的地位产生了交换,所以直接选择排序时不稳定的,当时光复杂度为平方阶O(n2),空间复杂度为O(l)。

    2.2.2 堆排序

    堆排序时对直接选择排序的一种有效改进。

    1. #-------------------------直接选择排序------------------------------- 
    2. def select_sort(data_list): 
    3. #依次遍历序列中的每一个元素 
    4.  for i in range(0, len(data_list)): 
    5. #将当前地位的元素定义此轮轮回傍边的最小值 
    6.  minimum = data_list[i] 
    7. #将该元素与剩下的元素依次比较寻找最小元素 
    8.  for j in range(i+1, len(data_list)): 
    9.  if data_list[j] < minimum: 
    10.  temp = data_list[j]; 
    11.  data_list[j] = minimum; 
    12.  minimum = temp 
    13. #将比较后获得的┞锋正的最小值赋值给当前地位 
    14.  data_list[i] = minimum 

    核心思惟:将所有的数据建成一个堆,最大年夜的数据在堆顶,然后将堆顶的数据元素和序列的最后一个元故旧换;接侧重建堆、交换数据,依次下去,大年夜而实现对所有的数据元素的排序。完成堆排序须要履行两个动作:建堆和堆的调剂,如斯反复进行。

    堆排序有可能会使得两个雷同值的元素地位产生交换,所所以不稳定的,其平均时光复杂度为0(nlog2n),空间复杂度为O(l)。

    Python源代码:

    1. #-------------------------堆排序-------------------------------- 
    2. #**********获取阁下叶子节点********** 
    3. def LEFT(i): 
    4.  return 2*i + 1 
    5.   
    6. def RIGHT(i): 
    7.  return 2*i + 2 
    8.   
    9. #********** 调剂大年夜顶堆 ********** 
    10. #data_list:待调剂序列 length: 序列长度 i:须要调及?结点 
    11. def adjust_max_heap(data_list,length,i): 
    12. #定义一个int值保存当前序列最大年夜值的下标 
    13.  largest = i 
    14. #履行轮回操作:两个义务:1 寻找最大年夜值的下标;2.最大年夜值与父节点交换 

    15.   推荐阅读

        Android中内存优化的那些事 - 一个有关图片的优化记录

      客服群里叫唤着:这个用户图片不显示了,那个用户图片也不显示了。我拿着手上一切正常的测试机,what the hell&hellip;&hellip;默默地打开bugly。 满园春色关不住,遍地内存溢出来!是的,>>>详细阅读


      本文标题:常用排序算法比较与分析

      地址:http://www.17bianji.com/lsqh/35003.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)