Python 冒泡排序 快速查找 以及 二分查找

#冒泡排序
def buddle_sort(under_sort_list):
l = under_sort_list
for j in range(len(l)):
for i in range(len(l)-j-1):
if l[i] > l[i+1]:
l[i], l[i+1] = l[i+1], l[i]
return l

# 快速排序
def quick_sort(l):
if len(l) < 2:
return l # 如果列表只有一个元素, 返回列表(用于结束迭代)
else:
pivot = l[0] # 取列表第一个元素为基准数
low = [i for i in l[1:] if i < pivot] # 遍历l, 将小于基准数pivot的全放入low这个列表
high = [i for i in l[1:] if i >= pivot ]
return quick_sort(low) + [pivot] + quick_sort(high) # 对左右两部分分别进行迭代

# 二分查找
# 返回 x 在 arr 中的索引,如果不存在返回 -1
# arr:列表 l:初始的列表索引 r:列表长度 x:要查找的字符
def binarySearch(arr, l, r, x):
# 基本判断
if r >= l:
mid = int(l + (r - l) / 2)
# 元素整好的中间位置
if arr[mid] == x:
return mid
# 元素小于中间位置的元素,只需要再比较左边的元素
elif arr[mid] > x:
return binarySearch(arr, l, mid - 1, x)
# 元素大于中间位置的元素,只需要再比较右边的元素
else:
return binarySearch(arr, mid + 1, r, x)
else:
# 不存在
return -1


if __name__=='__main__':
# print(quick_sort([5,2,3,1]))
ll=buddle_sort([5,2,3,1,7])
print (ll)
# [1, 2, 3, 5, 7]
print(binarySearch(ll, 0, len(ll)-1,7))

学习资料:https://www.runoob.com/python3/python-binary-search.html
学习资料:https://www.cnblogs.com/superhin/p/12737646.html
posted @ 2020-06-02 14:57  xxzz雪漫  阅读(309)  评论(0编辑  收藏  举报