Python - 快速排序
2018-02-02 12:40
134 查看
记录学习中的点点滴滴--快速排序
# coding=utf-8
def quick_sort(alist, start, end):
if start >= end:
return
left = start
right = end
# 选择起始位置数值作为中间值
middle = alist[start]
while left < right:
# 从右向左,找到第一个比中间值小的元素
while left < right and alist[right] >= middle:
right -= 1
# 将找到的小于中间值的元素赋值给alist[left],这样保证中间值左侧数值都比中间值小
alist[left] = alist[right]
# 从左向右,找到第一个比中间值大的元素
while left < right and alist[left] < middle:
left += 1
alist[right] = alist[left]
alist[left] = middle
# 对中间元素左侧序列进行递归排序
quick_sort(alist, start, left - 1)
# 对中间元素右侧序列进行递归排序
quick_sort(alist, left + 1, end)
if __name__ == "__main__":
alist = [123, 55, 23, 545, 88, 98, 100]
quick_sort(alist, 0, len(alist) - 1)
print(alist)
# coding=utf-8
def quick_sort(alist, start, end):
if start >= end:
return
left = start
right = end
# 选择起始位置数值作为中间值
middle = alist[start]
while left < right:
# 从右向左,找到第一个比中间值小的元素
while left < right and alist[right] >= middle:
right -= 1
# 将找到的小于中间值的元素赋值给alist[left],这样保证中间值左侧数值都比中间值小
alist[left] = alist[right]
# 从左向右,找到第一个比中间值大的元素
while left < right and alist[left] < middle:
left += 1
alist[right] = alist[left]
alist[left] = middle
# 对中间元素左侧序列进行递归排序
quick_sort(alist, start, left - 1)
# 对中间元素右侧序列进行递归排序
quick_sort(alist, left + 1, end)
if __name__ == "__main__":
alist = [123, 55, 23, 545, 88, 98, 100]
quick_sort(alist, 0, len(alist) - 1)
print(alist)
相关文章推荐
- python 快速排序代码
- 【编程练习】快速排序,Java和Python实现
- 快速排序python实现
- 使用python实现快速排序
- python排序算法的实现-快速排序
- python快速排序
- 常用排序算法python实现:快速排序
- JavaScript 、Python Java、Go算法系列之【快速排序】篇
- 快速排序、堆排序、归并排序的python实现
- python实现排序算法一:快速排序
- 快速排序——QuickSort——Python
- JavaScript 、Python Java、Go算法系列之【快速排序】篇
- 快速排序(伪代码 c/c++ python 实现)
- python---快速排序
- 快速排序之python实现
- 快速排序的算法思想及Python版快速排序的实现示例
- Python递归实现快速排序
- Python 快速排序 堆排序——Python实现一些算法持续更新
- 快速排序—C—python
- 算法导论快速排序python实现