插入排序-直接插入排序

直接插入排序

这个系列是回顾之前所学,是用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

以上,接下来实现选择排序的直接选择排序

原文地址:https://www.cnblogs.com/PurpleRain98/p/13588561.html