冒泡排序

冒泡法:第一趟:相邻的两数相比,大的往下沉。最后一个元素是最大的。

第二趟:相邻的两数相比,大的往下沉。最后一个元素不用比。

 #冒泡排序
array = [1,5,6,2,9,4,3]
def bubble_sort(array):
for i in range(len(array)-1):
for j in range(len(array)-i-1):
if array[j] > array[j+1]:
array[j],array[j+1] = array[j+1],array[j]
return array bubble = bubble_sort(array)
print(bubble)

时间复杂度:O(n^2)

稳定性:稳定

改进:如果一趟比较没有发生位置变换,则认为排序完成

 array = [1,2,3,5,7]
def bubble_sort(array):
for i in range(len(array)-1):
flag = 1 #建立标志位
for j in range(len(array)-i-1):
if array[j] > array[j+1]:
array[j],array[j+1] = array[j+1],array[j]
flag = 0
if not flag:
break
return array bubble = bubble_sort(array)
print(bubble)

直接选择排序

选择排序法:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放到序列的起始位置,直到全部排完。

 def select_sort(array):
for i in range(len(array)-1):
min = i
for j in range(i+1, len(array)):
if array[j] < array[min]:
min = j
array[i], array[min] = array[min], array[i]
return array array = [1,5,6,2,9,4,3]
select = select_sort(array)
print(select)

直接插入排序

列表被分为有序区和无序区两个部分。最初有序区只有一个元素。
每次从无序区选择一个元素,插入到有序区的位置,直到无序区变空。
其实就相当于摸牌:

 def insert_sort(array):
# 循环的是第二个到最后(待摸的牌)
for i in range(1, len(array)):
# 待插入的数(摸上来的牌)
min = array[i]
# 已排好序的最右边一个元素(手里的牌的最右边)
j = i - 1
# 一只和排好的牌比较,排好的牌的牌的索引必须大于等于0
# 比较过程中,如果手里的比摸上来的大,
while j >= 0 and array[j] < min:
# 那么手里的牌往右边移动一位,就是把j付给j+1
array[j+1] = array[j]
# 换完以后在和下一张比较
j -= 1
# 找到了手里的牌比摸上来的牌小或等于的时候,就把摸上来的放到它右边
else:array[j+1] = min
return array list=[5,6,1,2,8,3,4]
print(insert_sort(list))

最新文章

  1. Angularjs环境搭建
  2. phpstudy 局域网访问
  3. sysbench测试服务器性能
  4. Entity Framework 异常档案
  5. zoj 3591 Nim 博弈论
  6. 【零基础学习iOS开发】【02-C语言】09-流程控制
  7. redis 记录
  8. VS2008编程软件过期的问题,过期弹出须要升级窗体的解决的方法
  9. [置顶] Objective-C ,ios,iphone开发基础:在UITextField输入完以后,隐藏键盘,
  10. Haskell Json数据处理
  11. extjs 6.2 helloworld
  12. WPF实现只打开一个窗口,并且重复打开时已经打开的窗口置顶
  13. Java基于opencv实现图像数字识别(三)—灰度化和二值化
  14. 我写的.net相关的文章
  15. java中使用阻塞队列实现生产这与消费这之间的关系
  16. 前端 HTML 常用标签 head标签相关内容 style标签 定义内部样式表
  17. 算法初步——two pointers
  18. Vulkan Tutorial 01 开发环境搭建之Windows
  19. vue服务端渲染浏览器端缓存(keep-alive)
  20. 带参数的main函数

热门文章

  1. windows修改远程桌面RDP连接数
  2. SQL一对多特殊查询,取唯一一条
  3. 每天一道算法题(4)——O(1)时间内删除链表节点
  4. [51nod1384]全排列
  5. AngularJs(Part 11)--自定义Directive
  6. 把Nutch爬虫部署到Hadoop集群上
  7. Mahout0.9 – Clustering (聚类篇)
  8. Jmeter JDBC Request的sql语句不支持;号
  9. JavaScript学习系列2一JavaScript中的变量作用域
  10. Eclipse提交svn错误svn E210003 connection refused by the server