作家
登录

常用排序算法比较与分析

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

根据根本思惟,只有在两个元素的次序与排序请求相反时才将改换它们的地位,不然保持不变,所以冒泡排序时稳定的。时光复杂度为平方阶O(n2),空间复杂度为O(l)。

Python源代码:

  1. #-------------------------冒泡排序-------------------------------- 
  2. def bubble_sort(data_list): 
  3.  length = len(data_list) 
  4. #序列长度为length,须要履行length-1轮交换 
  5.  for x in range(1,length): 
  6. #对于每一轮交换,都将序列傍边的阁下元素进行比较 
  7. #每轮交换傍边,因为序列最后的元素必定是最大年夜的,是以每轮轮回到序列未排序的地位即可 
  8.  for i in range(0,length-x): 
  9.  if data_list[i] > data_list[i+1]: 
  10.  temp = data_list[i] 
  11.  data_list[i] = data_list[i+1] 
  12.  data_list[i+1] = temp 

2.3.2 快速排序

快速排序是对冒泡排序本质上的改进。

核心思惟:是一个当场排序,分而治之,大年夜范围递归的算法。即:经由过程一趟扫描后确保基准点的┞封个数据元素的左边元素都比它小、右边元素都比它大年夜,接着又以递归办法处理阁下两边的元素,直到基准点的阁下只有一个元素为止。

Python源代码:

  1. #-------------------------快速排序-------------------------------- 
  2. #data_list:待排序的序列;start排序的开端index,end序列末尾的index 
  3. #对于长度为length的序列:start = 0;end = length-1 
  4. def quick_sort(data_list,start,end): 
  5.  if start < end
  6.  i , j , pivot = start, end, data_list[start] 
  7.  while i < j: 
  8. #大年夜右开端向左寻找第一个小于pivot的值 
  9.  while (i < j) and (data_list[j] >= pivot): 
  10.  j = j-1 
  11. #将小于pivot的值移到左边 
  12.  if (i < j): 
  13.  data_list[i] = data_list[j] 
  14.  i = i+1 
  15. #大年夜左开端向右寻找第一个大年夜于pivot的值 
  16.  while (i < j) and (data_list[i] < pivot): 
  17.  i = i+1 
  18. #将大年夜于pivot的值移到右边 
  19.  if (i < j): 
  20.  data_list[j] = data_list[i] 
  21.  j = j-1 
  22. #轮回停止后,解释 i=j,此时左边的值全都小于pivot,右边的值全都大年夜于pivot 
  23. #pivot的地位移动精确,那么此时只需对阁下两侧的序列调用此函数进一步排序即可 
  24. #递归调用函数:依次对左侧序列:大年夜0 ~ i-1//右侧序列:大年夜i+1 ~ end 
  25.  data_list[i] = pivot 
  26. #左侧序列持续排序 
  27.  quick_sort(data_list,start,i-1) 
  28. #右侧序列持续排序 
  29.  quick_sort(data_list,i+1,end

2.4归并排序

核心思惟:把数据序列递归地分成短序列,即把1分成2、2分成4、依次分化,当分化到只有1个一组的时刻排序这些分组,然后依次归并回本来的序列,赓续归并直到原序列全部排好次序。


  推荐阅读

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

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


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

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

关键词: 探索发现

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

网友点评
自媒体专栏

评论

热度

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