python应用_快速查找

快速查找算法:

import random
def partition(list_object,start,end):
    random_choice = start#random.choice(range(start,end+1)) 把这里的start改成random()效率会更高些
    x = list_object[random_choice]
    i = start
    j = end
    while True:
        while list_object[i] < x and i < end:
            i += 1
        while list_object[j] > x:
            j -= 1
        if i >= j:
            break
        list_object[i],list_object[j] = list_object[j],list_object[i]
    print list_object
    #list_object[random_choice] = list_object[j]
    #list_object[j] = random_choice
    return j

def quick_sort(list_object,start,end):
    if start < end:
        temp = partition(list_object,start,end)
        quick_sort(list_object,start,temp-1)
        quick_sort(list_object,temp + 1 ,end)
        
a_list = [69,65,90,37,92,6,28,54]
quick_sort(a_list,0,7)
print a_list
        

输出结果:

[54, 65, 28, 37, 6, 69, 92, 90]
[6, 37, 28, 54, 65, 69, 92, 90]
[6, 37, 28, 54, 65, 69, 92, 90]
[6, 28, 37, 54, 65, 69, 92, 90]
[6, 28, 37, 54, 65, 69, 90, 92]
[6, 28, 37, 54, 65, 69, 90, 92]


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值