插入排序从前往后遍历数组的每一个元素,对每一位元素都将其插入到已经有序的部分数组中,所以插入排序的要点就是找出要插入元素在已经有序的部分中的位置,同时,由于插入排序采用原地排序(in-place)算法,需要将有序部分中为这个元素腾出位置,采用的办法是将有序部分中的从找到的位置之后的所有元素都向后移动一个位置来解决。

问题1)(已解决)出现了重复插入最小值的结果

def insertion_sort(collection):
# for element in collection[0:]:#因为是原地排序,所以要用到数组下标去作为有序和无序的分界点,并且有序部分需要向后移位。
# 需要以当前插入元素的数组下标作为位置,所以不能使用这种遍历。
for i in range(len(collection)):
variable=collection[i]
#开始遍历已经有序的部分,找出应该存放的位置
for j in range(i):#因为i是区分点嘛,所以是遍历i左边的元素,但是range(5),j最大=4,所以不用i-1
if(collection[j]>variable):#那么这个下标j就是被添加元素应该存放的位置
#开始后移,把j这个下标给腾出来
for k in range(i,j,-1):
collection[k]=collection[k-1]
#位置已经腾出,插入
collection[j]=variable
break#*******************因为没有写这句话的原因
#找到之后应该跳出上面的j循环,要不然就会从这个j开始继续向后比较,然后又交换
return collection #结果
(sort) λ python bubble_sort.py
未排序之前: [94, 37, 97, 31, 26, 79, 10, 35, 40, 6]
排序之后: [6, 6, 6, 6, 6, 6, 6, 6, 6, 10]
耗费时间: 0.0009999275207519531

  

最新文章

  1. 进程物理内存远大于Xmx的问题分析
  2. SpringMVC框架搭建 基于注解
  3. c++11 auto unique_ptr 等
  4. VC++ excel 2 operations
  5. go编写简单的web服务器
  6. ContentProvider 使用示例(转载)
  7. linux nginx安装(转载)
  8. 移动端页面的head头部内容
  9. Tomcat 调优总结
  10. 删除IE缓存中指定的文件
  11. HttpClient 4.3教程(转载)
  12. MyEclipse运行到断点也跳过的问题
  13. C#传递委托给C或C++库报错__对XXX类型的已垃圾回收委托进行了回调
  14. 避免循环做SQL操作
  15. Spring 高级依赖注入方式
  16. c#快速写本地日志
  17. Http_4个新的http状态码:428、429、431、511
  18. eclipse中搭建ssm框架
  19. Ubuntu 16.04服务器 配置
  20. 【转】Android业务组件化之URL Scheme使用

热门文章

  1. 路飞学城Python-Day27(复习)
  2. win10 MongoDB安装
  3. 用 Java 技术创建 RESTful Web (服务 JAX-RS:一种更为简单、可移植性更好的替代方式)
  4. js-数组和字符串转化
  5. 解决utf8' codec can't decode byte 0xe5 in position 0: unexpected end of data
  6. CSLA框架的codesmith模板改造
  7. BZOJ——1602: [Usaco2008 Oct]牧场行走 || 洛谷—— P2912 [USACO08OCT]牧场散步Pasture Walking
  8. 洛谷 P3420 [POI2005]SKA-Piggy Banks
  9. extjs grid 复制问题还有一种解决方式.
  10. mydumper安装及安装故障汇总