python冒泡排序
import random
array = [random.randint(1,100) for n in range(100)] # 0 7
for i in range(len(array)-1): # 比较轮数 # 1 6
for j in range(len(array)-1-i): # 每轮次数 # 2 5
if array[j] > array[j+1]: # 3 4
array[j],array[j+1] = array[j+1],array[j]
print(array)
python二分查找
# 纯算法的方式
arr_list = [i for i in range(1, 10)]
print(arr_list)
number = 9
count = 0
left = 0
right = len(arr_list) - 1
while left <= right:
middle = (left + right) // 2
print(middle)
count += 1
if number > arr_list[middle]:
left = middle + 1
elif number < arr_list[middle]:
right = middle - 1
else:
print(f'数字{number}已找到,索引值为{middle}')
break
else:
print(f'数字{number}没有找到')
print(f'一共用了{count}次查找')
# 递归
arr_list = [i for i in range(1, 10)]
def binary_search(number, left, right):
if left <= right:
middle = (left + right) // 2
if number < arr_list[middle]:
right = middle - 1
elif number > arr_list[middle]:
left = middle + 1
else:
return middle
return binary_search(number, left, right)
else:
return -1
print(binary_search(1, 0, len(arr_list) - 1))