首页 > 编程源码 > 插入排序

插入排序

楼主:可乐 [3级] · 2019-11-11 ·  浏览535 · 编程源码 · ID:

插入排序的定义每步将一个待排序的记录按其关键字的大小插到前面已经排序的序列中的适当位置,直到全部记录插入完毕为止。实现 原理从第一个元素开始,该元素可以认为已经被排序与第二个元素比较,如果第二个元素小于第一个元素,就把第一个元素往后挪,否则不变重复1-2步骤随着已排序部分元素个数的增加,来自未排序部分的新元素必须与已排序部分的所有元素进行比较,然后才能插入过程List = [5,2,6,4,7,9,1]第一步:选出第0位为默认排好序的第二步:未排序的为[2,6,4,7,9,1]第三步:选出2和5做比较,2<5,所以列表变为[2,5,6,4,7,9,1]第四步: 选出6和5做比较,5<6,所以原列表不变第五部: 选出4和6做比较,6>4,所以6的位置插入到4后面,但是5又比4大….. 原列表为[2,4,5,6,7,9,1]第六步: 再选出6和7做比较,原列表不动第七步:选出7和9做比较第八步:选出9和1做比较代码 # def insert(list):# # 确认循环次数# for i in range(1, len(list)):# # 确认需要排序的元素# temp = list[i]# # 把当前的元素与已经排好序的元素做比较交换# while i > 0 and list[i-1] > temp:# # 把已经排好序的元素想后移动一位,留下插入的位置# list[i] = list[i-1]# i -= 1# # 把需要排好序的元素插入到指定位置# list[i] = temp# return list # print(insert([5, 2, 6, 4, 7, 9, 1])) import numpy as np def insert(list): b = [list[0], np.inf] for i in range(1, len(list)): #b列表是正确的顺序,第二个for循环是将list[i]一一与b的比较 for x in range(len(b)): #这样插入的时候只要判断<=即可, #不用担心这个数是最大的一个, #因为在大打不过inf if list[i] <= b[x]: b.insert(x,list[i]) print(b) break b.pop() return b print(insert([5, 2, 6, 4, 7, 9, 1]))


- 版权声明 - 1、本帖所有言论和图片等纯属网友个人意见,与流星社区立场无关;
2、其他单位或个人使用、转载或引用本帖时必须同时征得该帖子作者可乐流星社区的同意;
3、备注原文地址:https://bbs.liuxingw.com/t/17032.html,可忽略第2条;
4、帖子作者需承担一切因本文发表而直接或间接导致的相关责任;
5、如本帖内容或部分内容转载自其它媒体,这并不代表本站赞同其观点和对其真实性负责;
6、如本帖若为资源类,将仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您安装或使用的设备中彻底删除上述内容;
7、如果您喜欢该程序,请支持正版软件,购买注册,可以得到更好的正版服务;
8、如本帖侵犯到任何版权或违法问题,请立即邮件告知我们,我们将及时予以处理。
2条回复 |  最后回复于2019-11-11

[]

自古一楼有星币,除了这次
发布于2019-11-11

回复列表

  • 内容加载中...

说点什么...

小铠 [2级]

这排版...复制粘贴吧
发布于2019-11-11

回复列表

  • 内容加载中...

说点什么...
登录注册 后才可进行评论
签到
9人签到
已签0天
  • 46636帖子
  • 1936897热点量
  • 185020火热值