我写了这样的插入算法:
In [33]: %paste
def insertion_sort2(arr):
for i in range(1, len(arr)):
insert_item = arr[i]
for j in range(i):#insert to sorted array arr[:i]
if insert_item < arr[j]:
arr[j] = insert_item
测试
In [35]: arr
Out[35]: [0, 0, 0, 2, 3, 3, 6, 6, 6]
In [36]: arr = list(range(9))
In [37]: random.shuffle(arr)
In [38]: insertion_sort2(arr)
In [39]: arr
Out[39]: [0, 0, 0, 0, 0, 0, 3, 3, 3]
我检查了逻辑但找不到任何问题。
1. i in arr[1:len]
2. insert arr[i] to arr[:i]
我的实现有什么问题?
答案 0 :(得分:1)
行
randomFive
覆盖arr[j] = insert_item
。它不会插入。
arr[j]