python 实现快排及二分查找
注意边界条件,以及特殊测试用例
def partition(numbers, low, high): key = numbers[low] while (low < high): while(numbers[high] >= key and low < high): high -= 1 while(numbers[low] < key and low < high): low += 1 numbers[low], numbers[high] = numbers[high], numbers[low] high -= 1 return low def quicksort(numbers, low, high): if low < high: key = partition(numbers, low, high) quicksort(numbers, low, key) quicksort(numbers, key+1, high)
def erfenxunhuan(numbers, key): start = 0 end = len(numbers)-1 if end < 0: return -1 while(start <= end): mid = (start + end) // 2 if key == numbers[mid]: return mid if key < numbers[mid]: end = mid-1 else: start = mid+1 return -1
a = [6,21,3,46,7,89,42,56,2,1,21,6] b = [7] c = [] quicksort(a,0,len(a)-1) print(a) re = erfenxunhuan(a, 7) print(re)