首页 技术 正文
技术 2022年11月19日
0 收藏 802 点赞 4,633 浏览 651 个字

插入排序

思想

​列表被分为有序区和无序区两个部分, 最初有序区只有一个元素, 每次从无序区选择一个元素, 插入到有序区的位置, 直到无序区变空

import random
from cal_time import get_running_time@get_running_time
def insert_sort(li):
n = len(li) for i in range(1, n): # 执行n-1趟, i为要插入元素的下标 tmp = li[i] # 要插入的值
j = i - 1 # j=-1停止后挪, li[j]比插入值小停止后挪
while j >= 0 and li[j] > tmp: # 往后挪就循环, 2个条件都满足
li[j + 1] = li[j]
j -= 1 # 循环结束时, j要么是-1, 要么是比插入值小的值
li[j + 1] = tmp return li@get_running_time
def insert_sort2(li):
n = len(li) for i in range(1, n): # 执行n-1趟
tmp = li[i]
for j in range(i - 1, -1, -1): if li[j] > tmp: # li[j]比插入值大 后挪
li[j + 1] = li[j]
else: # li[j]比插入值小 停止后挪
li[j + 1] = tmp
break # 循环结束时, 如果 j= 0,
if li[0] > tmp:
li[0] = tmp return lili = [i for i in range(0, 10000, 4)]
random.shuffle(li)
print(li)
print(insert_sort(li))
print(insert_sort2(li))
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,082
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,556
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,405
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,179
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,815
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,898