Python实现插入排序

图解

在这里插入图片描述
在这里插入图片描述

生成新列表

"""
固定最左边的数字,
从第二个开始和已固定的数字比较,
找到合适的位置后插入固定,以此类推
"""
# 定义一个无递增顺序的列表
data_list = [5, 9, 3, 1, 2, 8, 4, 7, 6]
done_list = []
done_list.append(data_list[0])
for i in range(1,len(data_list)):
    cursor = 0
    for j in range(len(done_list)):
        if data_list[i] < done_list[j]:
            done_list.insert(cursor, data_list[i])
            break            
        else:
            cursor += 1
    else:
        done_list.append(data_list[i])

print(done_list)

直接操作原列表

data_list = [5, 9, 3, 1, 2, 8, 4, 7, 6]
for i in range(1,len(data_list)):
    cursor = 0
    for j in range(i+1):
        if data_list[i] < data_list[j]:
            lower = data_list[i]
            data_list.remove(data_list[i])
            data_list.insert(cursor, lower)
            break
        else:
            cursor += 1
print(data_list)

游标–在已排序的元素位置上滑动

1.本文让游标从列表的第0个元素开始,向后滑动,特点是只要当前元素小于已排序的元素,那么就地插入(break),如果游标滑到头,当前元素还是最大的,那么该元素原地不动,继续接下来的循化;
2.如果游标从后往前滑,原理相似,也就是初始化cursor = i,然后前一个一个的比较,如果比前边已排序的元素小,游标往前滑动,直到找到第0个元素,中间如果大于已排序元素则就地插入元素,如果该元素一开始就比前边的大,那么原地不动,继续下一个循环

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值