python 实现快排及二分查找

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)


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值