快速排序与Python实现

在这里插入图片描述
python实现代码:

class Fast_rank:
    def __init__(self):
        from queue import Queue
        self.qu=Queue()
    def split(self,data_list,i,length):
        left=list(filter(lambda x:x<data_list[i],data_list[i+1:i+length]))
        right=list(filter(lambda x:x>=data_list[i],data_list[i+1:i+length]))
        self.qu.put((i,len(left)))
        self.qu.task_done()
        self.qu.put((i+len(left)+1,len(right)))
        self.qu.task_done()
        data_list[i:i+length]=left+[data_list[i]]+right
    def rank(self,data_list):
        i=0
        length=len(data_list)
        self.qu.put((i,length))
        while not self.qu.empty():
            i,length=self.qu.get()
            if length>1:
                self.split(data_list,i,length)
        return data_list

更简洁的方式:

def quicksort(data_list,i,length):
    if length<=1:
        return
    left = list(filter(lambda x: x < data_list[i], data_list[i + 1:i + length]))
    right = list(filter(lambda x: x >= data_list[i], data_list[i + 1:i + length]))
    data_list[i:i+length]=left + [data_list[i]] + right
    quicksort(data_list,i,len(left))
    quicksort(data_list,i+len(left)+1,len(right))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值