直接插入排序
这个系列是回顾之前所学,是用python商量着完成的。
路过的大佬就当看个乐,实现算法的方式不一,也有讨巧的做法。
我只讲讲我的思路,希望大家浏览的时候能多多提建议,共同学习共同进步。
--------------------------------------------------------------------------------------------------------
基本思路:
将待排序的序列看作两个部分,第一部分是已经排好序的部分,第二部分是暂时没有排序的部分。
[3, 2, 1, 4, 5] ==>这里的3是第一部分,后面的都是待排序位置 ==> [3, 2, 1, 4, 5]
现在要从第二部分中遍历出最小的数,所以这里有一层循环。
将选择出来的最小数插入到第一部分,因为第一部分是已经排好的序列了,
所以当前的最小值需要与第一部分的元素都比较一下,直到找到合适位置这里也需要一层循环。
具体实现:
def sorted_list(list): # 这里是第一层循环,下标是从1开始的 for i in range(1, len(list)): # 这里是第二层循环,目的是让最小值去已经排好序的第一部分去一个个进行比较,因为交换了位置,值的下标也会发生改变,直到比较i = 0停止 while i > 0: # 如果下标i的值小于i-1的值,他们之间就会交换位置 if list[i] < list[i-1]: list[i-1], list[i] = list[i], list[i-1] else: # 如果不小于,那位置是不用变化的,直接break break # 这也是为啥下标会减1 i -= 1 return list
以上,接下来实现选择排序的直接选择排序