算法入门(2)插入排序

18 篇文章 0 订阅
1 篇文章 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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值