冒泡排序的时间复杂度是O(N^2)

冒泡排序的思想: 每次比较两个相邻的元素, 如果他们的顺序错误就把他们交换位置

比如有五个数: 12, 35, 99, 18, 76, 从大到小排序, 对相邻的两位进行比较

  • 第一趟:
  • 第一次比较: 35, 12, 99, 18, 76
  • 第二次比较: 35, 99, 12, 18, 76
  • 第三次比较: 35, 99, 18, 12, 76
  • 第四次比较: 35, 99, 18, 76, 12

经过第一趟比较后, 五个数中最小的数已经在最后面了, 接下来只比较前四个数, 依次类推

  • 第二趟
    99, 35, 76, 18, 12
  • 第三趟
    99, 76, 35, 18, 12
  • 第四趟
    99, 76, 35, 18, 12
    比较完成

冒泡排序原理: 每一趟只能将一个数归位, 如果有n个数进行排序,只需将n-1个数归位, 也就是说要进行n-1趟操作(已经归位的数不用再比较)

#!/usr/bin/env python
# coding:utf-8 def bubbleSort(nums):
for i in range(len(nums)-1): # 这个循环负责设置冒泡排序进行的次数
for j in range(len(nums)-i-1): # j为列表下标
if nums[j] > nums[j+1]:
nums[j], nums[j+1] = nums[j+1], nums[j]
return nums nums = [5,2,45,6,8,2,1] print bubbleSort(nums)

缺点: 冒泡排序解决了桶排序浪费空间的问题, 但是冒泡排序的效率特别低

来自:http://www.cnblogs.com/qlshine/p/6017957.html

递归排序:

def func(lt=[]):
if len(lt)<=1:
return lt
key = lt[0]
lt_l = []
lt_r = []
lt_m = []
for i in lt:
if i < key:
lt_l.append(i)
elif i > key:
lt_r.append(i)
else:
lt_m.append(i)
lt_l = func(lt_l)
lt_r = func(lt_r)
return lt_l+lt_m+lt_r
lt = [12,34,2,5,8,9,1,6]
print(func(lt))

  

最新文章

  1. C#string类型总结
  2. jms的俩种模式
  3. php中alert弹出时单双引号问题
  4. 重新安装Ubuntu12.04
  5. Maven Install报错:Perhaps you are running on a JRE rather than a JDK?
  6. CF F. Shovels Shop(前缀和预处理+贪心+dp)
  7. Mysql 一个表中的数据插入另一个表中
  8. python中得公有和私有——私有函数和公开函数_补充完整
  9. javascript获取id元素
  10. vim删除单词
  11. Warning:The /usr/local/mysql/data directory is not owned by the &#39;mysql&#39; or &#39;_mysql&#39;
  12. Vue: 生命周期, VueRouter
  13. 使用PHPExcel实现数据批量导入到数据库
  14. oracle 11.2.0.1 rman异机恢复 11.2.0.3(windows X64)
  15. mysql 删除
  16. 使用 X-Frame-Options 防止被iframe 造成跨域iframe 提交挂掉
  17. gitlab+jenkins+hook代码自动构建发布上线
  18. 大数据测试之ETL测试工具和面试常见的问题及答案
  19. Python实现CSV数据的读取--两种方法实现
  20. 加overflow-hidden就可以解决高度塌陷问题,overflow-触发BFC

热门文章

  1. create subnet
  2. errno -4058 and npm WARN enoent ENOENT 解决方案
  3. BZOJ 1010 HNOI2008 玩具装箱 斜率优化
  4. HDU 4565 So Easy!(数学+矩阵快速幂)(2013 ACM-ICPC长沙赛区全国邀请赛)
  5. UnrealEngine4入门(二) 实现一个可用按键控制的球体
  6. IDEA无法新建GUI Form文件
  7. 绝对定位后a、button等hover状态样式不显示问题
  8. HighCharts中几种tooltip的显示格式
  9. C#中转义符
  10. P1717 钓鱼