直接插入_折半插入(python)

折半插入默认待插入值左侧部分已经排好顺序,找到合适位置,对插入点右侧已排好序的部分后移一步操作,循环直到全部点排序完成

 1 '''
 2 折半插入
 3 时间复杂度O(pow(n,2)
 4 '''
 5 def Zheban_Px(arr):
 6     for i in range(1,len(arr)):
 7         if arr[i] < arr[i - 1]:#首先判断插入值左侧列表最大值是否大于插入的值,如果不大于,就不用排序,如果小于执行以下操作
 8             temp=arr[i]  #待插入值
 9             low=0
10             high=i-1
11             while low<=high : #很重要
12                 middle=int((low+high)/2)
13                 if arr[middle]<temp:
14                     low=middle+1
15                 else:
16                     high=middle-1
17 
18             for j in range(i-1,high,-1):插入点右侧值全部后移
19                 arr[j+1]=arr[j]
20             arr[high+1]=temp #插入点
21     print(arr)
22 
23 Zheban_Px([88,78,65,156,239,43])
24 输出:
25 [43, 65, 78, 88, 156, 239]

 

转载于:https://www.cnblogs.com/japyc180717/p/9419773.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值