快速排序和归并排序Python3代码实现

#!/usr/bin/env python3


from random import randint

#  快速排序
def quickSort(ls, low, high):
    i = low
    j = high

    if i >= j:
        return ls

    key = ls[i]

    while i < j:
        while i < j and ls[j] >= key:
            j -= 1
        ls[i], ls[j] = ls[j], ls[i]

        while i < j and ls[i] <= key:
            i += 1
        ls[i], ls[j] = ls[j], ls[i]

    quickSort(ls, low, i - 1)
    quickSort(ls, j + 1, high)

    return ls

#  归并排序
def twoSort(ls1, ls2):
    ls1 = ls1 if type(ls1) is list else [ls1]
    result = []
    len1, len2, i, j = len(ls1), len(ls2), 0, 0
    while i < len1 and j < len2:
        if ls1[i] <= ls2[j]:
            result.append(ls1[i])
            i += 1
        else:
            result.append(ls2[j])
            j += 1
    result += ls1[i: ] + ls2[j: ]
    return result


def mergeSort(ls):
    if len(ls) == 1:
        return ls

    new_len = len(ls) // 2
    return twoSort(mergeSort(ls[: new_len]), mergeSort(ls[new_len: ]))


if __name__ == "__main__":
    ls = []

    for i in range(1000000):
        ls.append(randint(1, 100000000))

    result = mergeSort(ls)
    for r in result:
        print(r)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值