基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

一趟快速排序的算法是:
1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;
2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];
3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]和A[i]互换;
4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]和A[j]互换;
5)重复第3、4步,直到i=j; (3,4步中,没找到符合条件的值,即3中A[j]不小于key,4中A[i]不大于key的时候改变j、i的值,使得j=j-1,i=i+1,直至找到为止。找到符合条件的值,进行交换的时候i, j指针位置不变。另外,i==j这一过程一定正好是i+或j-完成的时候,此时令循环结束)。
python代码实现:
def quickSort(L, low, high):i = low j = highif i >= j:return Lkey = L[i]while i < j:while i < j and L[j] >= key:j = j-1                                                             L[i] = L[j]while i < j and L[i] <= key:    i = i+1 L[j] = L[i]L[i] = key quickSort(L, low, i-1)quickSort(L, j+1, high)return Lif __name__ == '__main__':arr=[3,5,2,1,7,8,4,15]print quickSort(arr, 0, len(arr)-1)

python快速排序法实现相关推荐

  1. python的冒泡排序法和快速排序法

    快速排序法的核心在于: 1.先从数列中取出一个数作为基准数. 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边. 3.再对左右区间重复第二步,直到各区间只有一个数. #冒泡 ...

  2. python快速排序 -两种方法

    python 快速排序 使用python实现快速排序 方法一 方法二 使用python实现快速排序 快速排序,⼜称划分交换排序 1.通过⼀趟排序将要排序的数据分割成独⽴的两部分, 其中⼀部分的所有数据 ...

  3. python快速排序实现元素递增

    python快速排序实现元素递增 概念 1.快速排序法又称分割交换法,是冒泡排序法的改进. 基本思想 2.在数据中找到一个虚拟的中间值,然后将所有计划排序的数据分成两部分.在这些数据中,小于中间值的数 ...

  4. 《贝叶斯思维:统计建模的Python学习法》——1.8 讨论

    本节书摘来异步社区<贝叶斯思维:统计建模的Python学习法>一书中的第1章,第1.8节,作者:[美]Allen B. Downey,更多章节内容可以访问云栖社区"异步社区&qu ...

  5. 1.16 快速排序法(Quicksort)

    快速排序(Quicksort)是对冒泡排序的一种改进,是一种排序执行效率很高的排序算法. 快速排序的基本思想是:通过一趟排序,将要排序的数据分隔成独立的两部分,其中一部分的所有数据比另外一部分的所有数 ...

  6. 探索初级算法学习笔记-快速排序法

    快速排序法学习笔记 #include<stdio.h>void swap(int *a,int *b) {int t;t=*a;*a=*b;*b=t; }void quickSort(in ...

  7. php四种基础算法:冒泡,选择,插入和快速排序法

    许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣.作为一个初级phper,虽然很少接触到算法方面的东西 .但是对于冒泡排序,插入排序,选择排序,快速排序四种基本算法,我想还是要 ...

  8. 算法之旅 | 快速排序法

    HTML5学堂-码匠:前几期"算法之旅"跟大家分享了冒泡排序法和选择排序法,它们都属于时间复杂度为O(n^2)的"慢"排序.今天跟大家分享多种排序算法里使用较广 ...

  9. oracle快速排序法,经典算法系列之快速排序算法

    快速排序(Quicksort)是对冒泡排序的一种改进.由C. A. R. Hoare在1962年提出.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但 ...

最新文章

  1. python装饰器-装饰器
  2. 梦之队奥运30人大名单:詹皇库里甜瓜双少领衔
  3. BZOJ 3434 时空穿梭
  4. C++ 模板和 C# 泛型之间的区别(C# 编程指南)
  5. 常用的HTML5和CSS3标签及用法(入门篇)
  6. MPMoviePlayerController 电影播放器—IOS开发
  7. 如何获取每周的星期一和星期天的日期
  8. 常见的直流稳压电源电容有哪些?及其详细介绍
  9. 电脑浏览器安全获取京东cookie
  10. 暗影精灵5触摸板双指手势失效问题
  11. 【深度强化学习】交叉熵方法
  12. 黑大项目群第二次作业,飞行棋(龟兔赛跑)java
  13. Netbeans 7.1 add android plugin
  14. 测试POST传输工具【poster】。
  15. java虚拟机JVM内存不够,OutOfMemorry Error
  16. Matlab 图片转gif
  17. Android小项目——新闻APP
  18. 惠普HP Laser NS MFP 1005c 打印机驱动
  19. 2. Python 简介
  20. Xampp远程连接其他数据库

热门文章

  1. 【多目标优化与进化计算】比较算法性能的三个指标IGD RPSP CPSP
  2. 计算机一级过的技巧,计算机一级考试内容及考试技巧
  3. java线程池面试题有哪些?java线程池常见面试题
  4. OSChina 周六乱弹 ——今年又让支付宝赢了
  5. 马云:给公司起个全世界都能记住的好名字
  6. 无人机飞控--科普贴
  7. linux 终端无法打开root 2021-11-08
  8. 筑基期第一式:深入Spring源码之第二节getBean全流程【循环依赖分析+扩展点分析】
  9. 交通诱导信息发布系统服务器,高速公路交通诱导信息发布系统设计与实现
  10. 整理分享安徽省2022年技术先进型服务企业认定申报详细范围条件材料汇总