哨兵位插入排序 理解 python实现

今天继续学习王晓华老师的算法课程。

哨兵位通常起两个作用,一个是作为临时存储空间使用,另一个是减少不必要的越界判断,简化算法代码复杂度。 ——引自王老师的算法课程d第1-7课

哨兵位插入排序(理解):
Step①把小的数存到哨兵位
Step②比较该位到哨兵位之间的数与哨兵位存储数的大小,大于则朝后移动,直至全部移动完毕;小于则退出while,将哨兵位的数放到当前判断位后面的那个空位。
***查找操作也可以通过设定哨兵位解决越界和找不到的情况。

仿照课程中C++代码直接改写成Python代码:

import pandas as pd
import numpy as np
ls=[4,3,1,2,5,9,23,12,15,27,29]
def insert_sort(ls):
    newls=np.append(0,ls)
    for i in range(2,len(newls)):
        if newls[i]<newls[i-1]:
            newls[0]=newls[i]
            j=i
            while newls[j-1]>newls[0]:
                newls[j]=newls[j-1]
                j=j-1
                
            newls[j]=newls[0]
    return newls[1:len(newls)]    

insert_sort(ls)     
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值