算法--练习题1

思路:利用二分法求解

def bin_search(data_set,val):
    low = 0
    high = len(data_set) - 1
    while low <= high:
        mid = (low + high) // 2 # 求中间值
        if data_set[mid] == val: # 输入值和中间值相等
            left = mid # 左边值为中间值
            right = mid # 右边值为中间值
            while left >= 0 and data_set[left] == val: # 左边值大于 0 ,左边值为选定的值
                left -= 1 # 向左边递进
            while right <= high and data_set[right] == val: # 右边值需要小于最右边的值 且 右边值 为 选定值
                right += 1 # 向右 递进
            return (left +1 , right - 1 )
        elif data_set[mid] < val: # 选定值 大于中间值
            low = mid + 1 # low 为 中间值 +1
        else: # 选定值 小于 中间值
            high = mid - 1 # high 为 中间值 - 1
    return

li = [1,2,3,3,3,4,4,5]
print(bin_search(li,4))

显示结果为:

算法--练习题1

 

相关文章:

  • 2021-05-21
  • 2021-11-25
  • 2022-12-23
  • 2021-07-02
  • 2022-12-23
  • 2022-02-07
猜你喜欢
  • 2021-10-21
  • 2021-12-04
  • 2022-12-23
  • 2019-12-14
  • 2021-11-20
相关资源
相似解决方案