python算法9.16——二分查找

# 利用二分法的方式对有序序列进行查找
# 基本原理:
# 对序列选择中间元素,与给定元素进行比较,如果小于中间元素,则再与前一序列继续二分比较;
# 否则,与后一序列二分比较,直到找到给定元素或者停止为止。

import random
Range = 10
Length = 5
flag = 0
pos = -1

list = random.sample(range(Range),Length)
goal = random.randint(0,Range)

# 冒泡排序处理
for i in range(Length-1):                   #控制循环次数
    for j in range(Length-i-1):             #控制每次循环内容
        if list[j] > list[j + 1]:
            list[j + 1], list[j] = list[j], list[j + 1]
print('search ',goal,', in list:',list)

min = 0
max = 4
mid = max//2
while mid:
    if list[mid] == goal:
        flag = 1
        pos = mid
        break
    elif list[max] == goal:
        flag = 1
        pos = max
        break
    elif list[mid]> goal:
        max = mid
    elif list[mid] < goal:
        min = mid
    mid = (min+max)//2

if flag:
    print('find in ',pos+1,'th place')
else:
    print('not found')

猜你喜欢

转载自blog.csdn.net/nominior/article/details/82729356