python算法--快速排序详细实现
2013-05-06 10:03
429 查看
快速排序的基本思想就是:分割。即以序列中的一个关键字(第一个,或者最后一个,或者任意一个)作为枢轴,将整个序列分割成两部分----比枢轴大的一部分和比枢轴小的一部分。然后再分别对这两部分(不包括枢轴)进行递归运算,直到序列有序。
如何划分?
令序列中第一个元素的下标为first,最后一个为last,枢轴为pivot, 序列为array。 这样从两端开始,让 array[first] 和 array[last] 分别交替和 array[pivot] 作比较。如果first(或者last)和pivot的关系相对于array[first](或array[last])和array[pivot]的关系一致---------即同时大于或者同时小于,那么将first后移(或last前移)一位,继续比较,否则,交换两者位置。直到last不再大于first,至此完成一趟分割。
代码实现:
运行结果:
如何划分?
令序列中第一个元素的下标为first,最后一个为last,枢轴为pivot, 序列为array。 这样从两端开始,让 array[first] 和 array[last] 分别交替和 array[pivot] 作比较。如果first(或者last)和pivot的关系相对于array[first](或array[last])和array[pivot]的关系一致---------即同时大于或者同时小于,那么将first后移(或last前移)一位,继续比较,否则,交换两者位置。直到last不再大于first,至此完成一趟分割。
代码实现:
#!/usr/bin/python # Filename: QuickSort.py __author__ = 'iHippie' __mail__ = 'ihippy@163.com' __date__ = '$Date: 2013/05/06 $' def quickSort(array, first, last): low, high = first, last pivot = low while low < high: while (pivot < high and array[pivot] <= array[high]) or (pivot > high and array[pivot] >= array[high]): high -= 1 array[pivot], array[high] = array[high], array[pivot] pivot = high while (pivot < low and array[pivot] <= array[low]) or (pivot > low and array[pivot] >= array[low]): low += 1 array[pivot], array[low] = array[low], array[pivot] pivot = low if first < last: quickSort(array, first, pivot-1) quickSort(array, pivot+1, last) # --------------------------Test---------------------------- import random a = [] for i in range(20): a.append(random.randint(0, 500)) print 'Before sort: ' print a quickSort(a, 0, len(a)-1) print 'After sort: ' print a
运行结果:
相关文章推荐
- Python 实现神经网络逆向传播算法(含详细注释)
- python算法--堆排序详细实现
- python算法--败者树详细实现
- C语言实现数组快速排序(含对算法的详细解释)
- 快速排序的算法思想及Python版快速排序的实现示例
- python算法--置换选择排序详细实现
- C语言实现数组快速排序(含对算法的详细解释)
- 【算法——Python实现】快速排序的优化:三路快速排序及Leetcode题目应用
- python实现的 K-近邻算法代码详细解释
- 算法 python实现(三) 快速排序
- Josephus Problem的详细算法及其Python, Java语言的实现
- C语言实现数组快速排序(含对算法的详细解释)
- logistic回归算法详细分析与Python代码实现注释
- Josephus Problem的详细算法及其Python、Java实现
- 快速排序(算法导论实现)
- python实现简单神经网络算法
- 协同过滤算法之UserCF算法的python实现及部分优化
- Python3.2 实现基于KNN算法的数据分类
- 算法基础之python实现贪心算法中圣诞老人分糖果问题和二分查找算法中烘干衣服问题
- Twitter的分布式自增ID算法Snowflake实现分析及其Java、Php和Python版