三种方式实现python版的快速排序算法代码
三种方式实现python版的快速排序算法代码,三种方式的效率相当,其中第一种方式最为简单,只需要一行代码搞定,第三种方式代码最为清晰。
""" 作者:皮蛋编程(https://www.pidancode.com) 创建日期:2022/3/21 功能描述:三种方式实现python版的快速排序算法代码 """ def qsort(L): return ((qsort([x for x in L[1:] if x < L[0]]) + L[0:1] + qsort([x for x in L[1:] if x >= L[0]]) ) if L else []) def qsort2(L): if len(L) <= 1: return L pivot = L[0] less = [x for x in L if x < pivot] equal = [x for x in L if x == pivot] greater = [x for x in L if x > pivot] return qsort2(less) + equal + qsort2(greater) def qsort3(arr, l, r): def swap(arr, s, d): if s != d: tmp = arr[s] arr[s] = arr[d] arr[d] = tmp if l >= r: return m = l for i in range(l, r): if arr[i] <= arr[r]: swap(arr, i, m) m += 1 swap(arr, m, r) qsort3(arr, l, m - 1) qsort3(arr, m + 1, r) return arr lst = [23, 394, 66, 43, 203, 549, 44, 670, 20, 482, 45] print(qsort(lst)) print(qsort2(lst)) print(qsort3(lst, 0, len(lst)-1))
输出结果如下:
[20, 23, 43, 44, 45, 66, 203, 394, 482, 549, 670]
[20, 23, 43, 44, 45, 66, 203, 394, 482, 549, 670]
[20, 23, 43, 44, 45, 66, 203, 394, 482, 549, 670]
以上代码在python3.9环境下测试通过。
相关文章