Python实现快速排序
2018-01-25 21:19
190 查看
""" 快速排序的思路: numlist = [6, 8, 1, 4, 3, 9, 5, 4, 11, 2, 2, 15, 6] 1、设keys(又称为监视哨)等于numlist=[0],i等于0,j等于len(numlist)-1,即如下: numlist = [6, 8, 1, 4, 3, 9, 5, 4, 11, 2, 2, 15, 6] | | keys=6,i=0 j 2、(1)、第一次排序的第一趟是拿numlis[j] 和keys 比较,如果numlist[j]<keys,则把numlist[j] 赋给numlist[i],如果numlist[j]>keys,则j向前移一位,即:j -= 1,在例子numlist中,第一次比较 因为keys=6,numlist[j]=6,所以j -= 1,如下所示: numlist = [6, 8, 1, 4, 3, 9, 5, 4, 11, 2, 2, 15, 6] | | keys=6,i=0 j 然后继续拿numlist[j]和keys相比,因为numlist[j]=15 > keys,所以 j -= 1,j的位置如下: numlist = [6, 8, 1, 4, 3, 9, 5, 4, 11, 2, 2, 15, 6] | | keys=6,i=0 j 此时因为numlist[j]=2 < keys , 便进行 赋值 : numlist[i] = numlist[j],完成第一次趟排序, 完成第一次趟排序后,numlist和i,j的位置如下: numlist = [2, 8, 1, 4, 3, 9, 5, 4, 11, 2, 2, 15, 6] | | i=0 j (2)、第一次排序的第二趟是拿前面开始往后搜索,如果比keys大,则赋值给numlist[j],因为此时 numlist[i]=2<keys,所以i向后移一位,即 i += 1,此时i的位置如下: numlist = [2, 8, 1, 4, 3, 9, 5, 4, 11, 2, 2, 15, 6] | | i=0 j 因为此时的numlist[i]=8>keys,所以进行 numlist[j]=numlist[i]运算,然后再进行 numlist[i] = keys 的运算,经过第二趟排序后,numlist如下: num 4000 list = [2, 6, 1, 4, 3, 9, 5, 4, 11, 2, 8, 15, 6] | | i=0 j 3、继续重复2的步骤,直到i>=j,跳出第一次排序,并且返回i的值,经过第一次排序后的numlist如下: numlist = [2, 2, 1, 4, 3, 4, 5, 6, 11, 9, 8, 15, 6] 4、然后进行递归,直到排序完成 """ def quicky_sort(datalist,left,right): keys = datalist[left] i = left j = right while i<j: while i<j and datalist[j]>=keys: j -= 1 datalist[i] = datalist[j] while i<j and datalist[i]<=keys: i += 1 datalist[j]=datalist[i] datalist[i]=keys return i def tempquick(datalist1,left,right): if left<right: p = quicky_sort(datalist1,left,right) #进行递归 tempquick(datalist1,left,p-1) tempquick(datalist1,p+1,right) return datalist1 numlist = [6, 8, 1, 4, 3, 9, 5, 4, 11, 2, 2, 15, 6] print(tempquick(numlist,0,len(numlist)-1))
相关文章推荐
- python中实现二分查找,插入排序,归并排序,快速排序
- 用Java、C++、python实现快速排序
- python实现快速排序
- 八大排序算法Java、Python、C++实现 -- 快速排序
- Python实现快速排序和插入排序算法及自定义排序的示例
- 快速排序(python实现)
- python超精简代码实现快速排序
- python 实现快速排序
- Python快速排序的实现方法
- 快速排序的python实现
- 【算法——Python实现】快速排序的优化:三路快速排序及Leetcode题目应用
- Python实现快速排序
- python和C语言分别实现快速排序
- Python实现的快速排序,Very Good!!!
- python递归实现快速排序
- Python实现快速排序算法及去重的快速排序的简单示例
- 用Python实现排序算法――快速排序
- python实现快速排序
- 快速排序Python实现
- python实现快速排序的示例(二分法思想)