图解
生成新列表
"""
固定最左边的数字,
从第二个开始和已固定的数字比较,
找到合适的位置后插入固定,以此类推
"""
# 定义一个无递增顺序的列表
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个元素,中间如果大于已排序元素则就地插入元素,如果该元素一开始就比前边的大,那么原地不动,继续下一个循环