defpartition(arr, begin, end):
pivot = end
counter = begin
for i inrange(begin, end):if arr[i]< arr[pivot]:
arr[counter], arr[i]= arr[i], arr[counter]
counter +=1
arr[counter], arr[pivot]= arr[pivot], arr[counter]return counter
defquick_sort(arr, begin, end):if end <= begin:return
pivot = partition(arr, begin, end)
quick_sort(arr, begin, pivot-1)
quick_sort(arr, pivot+1, end)if __name__ =='__main__':
array =[10,7,8,9,1,5]
quick_sort(array,0,len(array)-1)print(array)
二、归并排序
三、堆排序
四、二分查找
defbinary_search(arr, target):
left, right =0,len(arr)-1
result =-1while left <= right:
mid =(left + right)//2if arr[mid]== target:
result = mid
breakelif arr[mid]< target:
left = mid +1else:
right = mid -1return result
if __name__ =='__main__':
binary_arr =[2,3,4,10,40]print(binary_search(binary_arr,10))