python-初始二分法(一)

2021年11月20日 阅读数:3
这篇文章主要向大家介绍python-初始二分法(一),主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

二分法

一、二分法核心图

image

二、二分法算法应用实例

  • 二分法是一种搜索效率比较高的算法,每次搜索会把范围缩小一半,最终获取到想要的结果

二分法基础运用,实例1以下:python

import random
# 获取100之内的随机数
start_num =0
end_num = 100
while True:
     real_num = random.randint(0,100)
     num = int(input('please input your guess num>>>>:'))
     if num>real_num:
          end_num = num
          print(f'to big,范围是{start_num}~{end_num}')
     elif num < real_num:
          start_num = num
          print(f'to small,范围是{start_num}~{end_num}')
     else:
          print('guess right!')
          break
'''这个猜数字游戏,很好的运用了二分法的思想,
若是猜大了,那么就把输入的值当作范围的上限,
若是猜小了,那么就把输入值当作范围的下限'''

实例2以下:算法

# 用二分法在列表搜索值321,二分法查找必须有序
l = [11, 23, 43, 57, 68, 76, 81, 99, 111, 123,
     321, 432, 567, 666, 712, 899, 999, 1111]
# 排序
l.sort()
def binary_target(target_num, l):
    if len(l) == 0:
        print('没找到')
        return
    # 先获取中间位置索引值
    middle_index = len(l) // 2  
    # 判断中间索引对应的值比目标值大仍是小
    if target_num > l[middle_index]:
        # 说明要找的元素只可能出如今列表的右侧
        l_right = l[middle_index + 1:]  
        print(l_right)
        binary_target(target_num, l_right)
    elif target_num < l[middle_index]:
        # 说明要找的元素只可能出如今列表的左侧
        l_left = l[:middle_index]
        print(l_left)
        binary_target(target_num, l_left)
    else:
        print('找到了', target_num)
binary_target(321,l)

查找过程图示:dom

image


学完的状态!
image3d


学完头脑分离···code