美文网首页
算法入门(2)插入排序

算法入门(2)插入排序

作者: 梦san国 | 来源:发表于2019-12-18 17:22 被阅读0次

    插入排序:就是把一个无序数组按照从小到大或者从大到小排序为有序数组。
    1.首先将无序数组中的第一个元素设为有序数组的第一个元素。
    2.从无序数组中的第二个数开始与有序数组中的元素作比较如果大于新数组中的第k个元素则数组从第k个元素往后的元素都需要向右移动一位。腾出第k个元素的位置放入新元素。
    3.重复第二步取第三,四,五 。。。。 一直到无序数组为空。
    4.该方法无序数组从大到小排列为有序数组。

    
    def insert_sort1(n_list):
        temp = 0
        # 第一层循环 是 列表中的无序部分 从1到n
        for i in range(1,len(n_list)):
            # 第二层循环 是列表中的有序部分 0 -i
            for j in range(i):
                # 如果说 列表中的第i个无序元素大于第j有序元素
                if n_list[i]<n_list[j]:
                    temp = n_list[i]
                # 将 从 j - i-1 部分的元素统统后移一位
                    for k in range(i,j,-1):
                        n_list[k] = n_list[k-1]
                    n_list[j] = temp
                    break
        print(n_list)
        return  n_list
    
    def insert_sort2(n_list):
        for i in range(1,len(n_list)):
            for j in range(i):
                if n_list[i] >n_list[j]:
                    temp = n_list[i]
                    for k in range(i,j,-1):
                        n_list[k] = n_list[k-1]
                    n_list[j] = temp
                    break
        return  n_list
    
    
    
    
    
    if __name__ == "__main__":
    
        n_list= [1,2,3,4,5,7,0,-1,5,-10]
        insert_sort1(n_list)
        insert_sort2(n_list)
    

    相关文章

      网友评论

          本文标题:算法入门(2)插入排序

          本文链接:https://www.haomeiwen.com/subject/hqbunctx.html