比较简单的一种快速排序方法

快速排序

def quicksort(head, tail):
    head1 = head
    tail1 = tail
    tmp = arr[head]     # 储存临时元素

    # 如果头指针小于尾指针一直循环,直到相等找到元素的正确索引跳出循环
    while head < tail:
        # 尾部数据大于临时元素,尾指针前移
        while arr[tail] > tmp and head < tail:
            tail -= 1

        # 尾部数据小于等于临时元素,赋值给头指针,头指针后移
        arr[head] = arr[tail]
        if head < tail:
            head += 1

        # 头部数据大于临时元素,头指针后移
        while arr[head] < tmp and head < tail:
            head += 1

        # 头部数据大于等于临时元素,赋值给尾指针,尾指针前移
        arr[tail] = arr[head]
        if head < tail:
            tail -= 1

    index = head    # head和tail相等 是正确位置
    arr[index] = tmp  # 把临时元素赋值给正确位置
    print(arr)
    if index - 1 > head1:   # 递归前半部分
        quicksort(head1, index - 1)
    if index + 1 < tail1:   # 递归后半部分
        quicksort(index + 1, tail1)


if __name__ == '__main__':
    arr = [4,1,3]
    quicksort(0, len(arr) - 1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值