排序算法之插入排序(Python-C++)

排序算法之插入排序

插入排序的工作方式像许多人排序一手扑克牌。开始时,我们的左手为空并且桌子上的牌面向下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较。拿在左手上的牌总是排序好的,原来这些牌是桌子上牌堆中顶部的牌 。
插入排序是指在待排序的元素中,假设前面n-1(其中n>=2)个数已经是排好顺序的,现将第n个数插到前面已经排好的序列中,然后找到合适自己的位置,使得插入第n个数的这个序列也是排好顺序的。按照此法对所有元素进行插入,直到整个序列排为有序的过程,称为插入排序

个人理解

插入排序很像小时候老师给我们排队,一队身高不一样的小朋友等着老师排队,然后这时候老师就开始从第二个小朋友开始排,她要做的是先把第二个小朋友从队伍中拎出来,然后跟第一个比,如果第一个小朋友比第二个小朋友高就让第一个小朋友让后站一位,然后拿出来的这个小朋友让他站在第一个的位置上,然后继续,把第三个小朋友拎出来,跟前面两个比,如果第三个小朋友比第二个小朋友矮就让第二个小朋友站到第三个小朋友的位置上,然后继续跟第一个小朋友比,发现第一个小朋友比拎出来的小朋友个子矮,那就把拎出来的小朋友放在第二个位置就行了,然后剩下的小朋友都按这种方法排队,直到最后一个小朋友。

配上动图理解

插入排序动图

Python代码

def insert_sort(sort_list):
    for i in range(1,len(sort_list)):
        cur_data = sort_list[i]#拎出来的小朋友
        j = i#拎出来的小朋友的位置
        while j > 0 and sort_list[j -1] > cur_data:#如果前面有人,并且前一个小朋友比拎出来的小朋友身高高就让身高高的小朋友往后站一位
            sort_list[j] = sort_list[j -1]
            j -= 1#继续往前看
        sort_list[j] = cur_data
        #空出来的位置就是拎出来小朋友的位置

C++代码

void insertSort(int *list,int len){
    for (int i= 1;i<len;i++) {
        int cur_num = list[i];
        int j = i;
        while (j > 0 && list[j-1] > cur_num) {
            list[j] = list[j-1];
            j--;
        }
        list[j] = cur_num;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维导航

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值