二分查找顾名思义就是,查一半,符合就接着查,不符合就丢弃。
def search(data, item):
low = 0 # 最小的索引
hight = len(data) - 1 # data最大的索引
while low <= hight: # 只要不是只有一个元素,就循环
mid = (low + hight) // 2 # 中间索引值
result = data[mid] # 中间值
if result == item: # 比较查找的值
return mid # 返回索引值
elif result < item: # 传入值大于中间值,去除不符合要求的部分
low = mid + 1
else:
hight = mid - 1
return None # 没有返回None
data = [1, 5, 6, 8, 7, 60] # 列表必须是有序的
print(search(data, 60))
快速排序
快速排序,有递归的思想。
快速排序,是取列表的一个数,来比较列表中其他数,比他大的,放一边,比他小的放一边,最后拼接时,自己放中间。
在排序时,左右两侧的数只是分成比他大的数与比他小的数,但内部依然是无序的,因此,递归调用自己就可以了。
def fast_sort(lis):
if len(lis) < 2:# 基线条件,基线条件比较好找,但递归条件不易找
return lis
else:# 递归条件
data = lis[0]
left = [i for i in lis[1:] if data > i]
right = [i for i in lis[1:] if data < i]
return fast_sort(left) + [data] + fast_sort(right)
lis = [2, 8, 7, 9, 1, 3, 5, 7]
print(fast_sort(lis))
评论列表
已有0条评论