# 递归实现二分查找
def erfen_search(l, n, left=0, right=None):
if right is None:
right = len(l) - 1
if left <= right:
mid = (left + right) // 2
if n > l[mid]:
left = mid + 1
return erfen_search(l, n, left, right)
elif n < l[mid]:
right = mid - 1
return erfen_search(l, n, left, right)
elif n == l[mid]:
print('找到了')
return mid
else:
print('没有这个数')
return
if __name__ == '__main__':
L = [1, 2, 3, 4, 5, 6, 7]
n = 2
ret = erfen_search(L, n)
print(ret)
# 快排
def quick_sort(A, l, r):
if l < r:
pivot = A[l]
left = l
right = r
while left < right:
while A[right] > pivot and left < right:
right -= 1
# 左右不能相等,相等的话会进行移动,导致数组越界
if left < right:
A[left] = A[right]
left += 1
while A[left] <= pivot and left < right:
left += 1
if left < right:
A[right] = A[left]
right -= 1
A[left] = pivot
quick_sort(A, l, left-1)
quick_sort(A, left+1, r)
if __name__ == '__main__':
S = [0, 2, 1, 6]
quick_sort(S, 0, 3)
print(S)
# 冒泡排序
def maopao_sort(l):
for i in range(len(l) - 1):
for j in range(len(l) -1 - i):
if l[j] > l[j+1]:
l[j], l[j+1] = l[j+1], l[j]
return l
if __name__ == '__main__':
L = [3, 1, 2, 4, 6]
ret = maopao_sort(L)
print(ret)
二分查找、快排、冒泡排序
最新推荐文章于 2022-07-06 22:20:47 发布