python经典排序之快排
快速排序是一种分治排序算法。这种算法首先会选取一个划分元素,然后重排列表,将一个列表分为小于部分,划分区域部分,大于部分,然后分别对大于和小于部分进行递归排序,划分元素会直接影响到快排的算法效率,通常我们会选择列表的第一个元素,中间元素,最后一个元素作为划分元素。
快排的有点是原位排序,平均时间复杂度位O(n log n),最坏的情况下时间复杂度位O(n**2)。
实现代码:
#!/usr/bin/python3
#! -*- coding:UTF-8 -*-
def quicksort(L):
qsort(L, 0, len(L)-1)
def qsort(L, first, last):
if first < last:
split = partition(L, first, last)
qsort(L, first, split-1)
qsort(L, split+1, last)
def partition(L, first, last):
pivot = L[first]
leftmark = first + 1
rightmark = last
while True:
while L[leftmark] <= pivot:
if leftmark == rightmark:
break
leftmark += 1
while L[rightmark] > pivot:
rightmark -= 1
if leftmark < rightmark:
L[leftmark],L[rightmark] = L[rightmark], L[leftmark]
else:
break
L[first], L[rightmark] = L[rightmark], L[first]
return rightmark
num_list = [5, 8, -10, 3, 9, 15, -5, 13]
print(num_list)
quicksort(num_list)
print(num_list)
执行结果为排序前后的比对。
- 八大经典排序算法基本思想及代码实现(Python、C++)
- 经典排序算法python回顾之四 二叉查找树排序
- python经典排序之快排
- 《面试》 几种经典的简单的排序方法(冒泡,选择,插入)python实现
- Python字典按值排序、包含字典的列表按字典值排序的方法
- [排序] 简单选择排序(Python)
- python中如何对dict对象进行排序
- 经典算法——快速排序
- 白话经典算法系列之六 快速排序 快速搞定
- 几种经典的数据排序及其Java实现
- 使用Python对文件名进行排序
- 白话经典算法系列之六 快速排序 快速搞定
- python插入排序
- 白话经典算法系列之五 归并排序的实现
- python字典的遍历与key的排序
- 重温经典排序思想--C语言常用排序全解(转载--值得一看)
- python练习程序(c100经典例6)
- 【Python学习系列二十二】pandas数据筛选和排序
- python练习程序(c100经典例14)
- 经典排序之选择排序、插入排序、冒泡排序、希尔排序