python简洁代码实现快速排序
2017-10-27 20:44
806 查看
**快速排序 最优时间复杂度为nlogn,因为要完成n个嵌套调用,,但比冒泡排序要快
python实现逻辑过程是这样得。
1.设置两个游标 left跟right
2.设置基准值,网上有方案设置中间数为基准值,但计算比较麻烦,而且并不一定高效,这里设置列表最右的那个元素为基准值,
3.left游标 从左向右移动,当游标指向元素大于基准值时,停下,交换right游标指向的元素
4 同理 right右标向左移动
5 当左右游标相等时停止循环,赋值基准值给左游标指向的元素
6 对基准值左边的元素递归,重复以上步骤,
7 设置条件退出递归。
下面是代码实现
输出结果为 [3, 9, 12, 21, 22, 34, 65, 66, 89]
简洁的代码 ,很pythonic.
python实现逻辑过程是这样得。
1.设置两个游标 left跟right
2.设置基准值,网上有方案设置中间数为基准值,但计算比较麻烦,而且并不一定高效,这里设置列表最右的那个元素为基准值,
3.left游标 从左向右移动,当游标指向元素大于基准值时,停下,交换right游标指向的元素
4 同理 right右标向左移动
5 当左右游标相等时停止循环,赋值基准值给左游标指向的元素
6 对基准值左边的元素递归,重复以上步骤,
7 设置条件退出递归。
下面是代码实现
alist= [22,21,34,65,12,89,3,9,66] def qucik_sort(alist,low, high): # 退出递归条件 # left=right while low>high: return alist left = low right = high base_value = alist[right] while left < right: while left<right and alist[left] < base_value: left += 1 # 跳出循环条件 # alist[left]>=base_value alist[right]=alist[left] while right>left and alist[right]>base_value: right -= 1 # 跳出循环条件 # alist[right]<=base_value alist[left]=alist[right] # 把基准值赋值给游标停留的元素 alist[right] = base_value qucik_sort(alist,low,left-1) qucik_sort(alist,left+1,len(alist)-1) print(alist) if __name__ == '__main__': low = 0 high = len(alist)-1 qucik_sort(alist,low,high)
输出结果为 [3, 9, 12, 21, 22, 34, 65, 66, 89]
简洁的代码 ,很pythonic.
相关文章推荐
- 快速排序(伪代码 c/c++ python 实现)
- Python实现冒泡排序、选择排序、插入排序、快速排序、归并排序、二分法查找算法(基于《算法导论》伪代码)
- 快速排序的C语言代码实现
- 快速排序的非递归实现代码
- python 3.2 实现快速排序 源代码
- python快速排序代码实例
- 假导出Excel功能实现,按CSV格式快速导出功能代码参考(追求代码追求简洁复用)浙江杭州
- 交换排序——冒泡排序和快速排序,C++代码实现
- Ruby一行代码实现快速排序
- Python实现快速排序
- 用Python实现的数据结构与算法:快速排序
- 快速排序的c++实现 和 python 实现
- 快速排序其他实现代码
- 快速排序及代码实现
- 快速排序-常见中轴(主元pivot)选择方法及实现代码(末位/随机/三数中值/..)
- 快速排序的C语言代码实现
- python 快速排序代码
- 选择,插入,希尔,快速,堆,归并排序六种排序方式的Java 实现和性能对比(付代码)
- 快速排序——Python实现(1)
- 快速排序--C语言实现、python实现