#!/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)
快速排序和归并排序Python3代码实现
最新推荐文章于 2021-08-06 10:53:18 发布