2019年2月

插入排序就像打扑克牌那样, 调整手中扑克牌的顺序。

我最开始写的版本

list_ = [2,1,7,4,9,3,5]

new_list = []
for n in list_:
    if new_list:
        for j in range(len(new_list)):  # 此处不能把new_list 做为循环对象, 
                                        # 因为下文会修改new_list,改循环len()
            if n < new_list[j]:
                new_list.insert(j, n)
                break
            if j == len(new_list) -1:
                new_list.insert(j+1, n)
    else:
        new_list.append(n)

print(new_list)

参考书上的第二版本

- 阅读剩余部分 -

选择排序就是先找出一个列表中最大的元素放到一个新的空列表中,再从这个列表中剩下的元素找出最大的(也就是次大的)添加到之前的新列表后面。以此类推,一直,把原列表找完, 新列表里面的元素就是排好序的。
def findSamllest(arr):
    smallestt = arr[0]
    smallestt_index = 0
    for i in range(1, len(arr)):
        if arr[i] < smallestt:
            smallestt = arr[i]
            smallestt_index = i
    return smallestt_index


def selecionSort(arr):
    newArr = []
    for i in range(len(arr)):
        samllest_index = findSamllest(arr)
        newArr.append(arr.pop(samllest_index))
    return newArr

print(selecionSort([3,7,2,9,6,1]))