何为快速算法:它是冒泡排序的改进~

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

算法的整个处理过程如下:

核心思想:基准数不断不断归位的过程(右边大于基准数,左边小于基准数):

当基准数为左边第一个数时,(从右边向左开始扫描,当扫描到小于基准数的时候,暂停扫描,此时数组下标为j

轮到左边往右边扫描,当扫描到大于基准数的时候,暂停扫描,此时数组下标为i,交换i与j下标的数值),继续“()”的步骤。

什么时候截止呢?当i=j时,将基准数base与i所指的数交换,然后不断的迭代这个过程。

当基准数为左边第一个数时,(从右边向左开始扫描,当扫描到小于基准数的时候,暂停扫描,此时数组下标为j

轮到左边往右边扫描,当扫描到大于基准数的时候,暂停扫描,此时数组下标为i,交换i与j下标的数值),继续“()”的步骤。

什么时候截止呢?当i=j时,将基准数base与i所指的数交换,然后不断的迭代这个过程。

算法实现如下:

  1. public static void quickSort(int [] a, int left, int right) {
  2. int i, j, t, base;
  3. if (left > right)
  4. return;
  5. base = a[left]; // base中存的就是基准数
  6. i = left;       // 设置左右两个参数
  7. j = right;
  8. while (i != j) {
  9. //要先从右边开始找
  10. while (a[j] >= base && i < j)
  11. j--;
  12. // 再找左边的
  13. while (a[i] <= base && i < j)
  14. i++;
  15. // 交换两个数在数组中的位置
  16. if (i < j) {
  17. t = a[i];
  18. a[i] = a[j];
  19. a[j] = t;
  20. }
  21. }
  22. // 最终将基准数归位
  23. a[left] = a[i];
  24. a[i] = base;
  25. quickSort(a, left, i - 1);// 继续处理左边的,这里是一个递归的过程
  26. quickSort(a, i + 1, right);// 继续处理右边的 ,这里是一个递归的过程
  27. }

http://blog.csdn.net/sunhuaqiang1/article/details/52059322有时间可参考此链接

Java排序算法之--快速算法--快速上手相关推荐

  1. 排序算法之----快速排序(快速上手快速排序)

    排序算法之----快速排序(快速上手快速排序) 何为快速排序算法? 快速排序的基本思想又是什么? 其实很简单: 快速排序的基本思想是 1.先从数列中取出一个数作为基准数(这里我们的算法里面取数组最右边 ...

  2. 算法基础、算法比赛快速入门(java)

    想用Java快速入门算法?这篇文章你得看! 提示:本文章适合想要入门算法,并且想 "快速" 达到一定成果的同学们阅读~ 文章非常非常非常长(可能是你见过最长的算法基础篇章)!!! ...

  3. weka java 分类算法_使用Weka快速实践机器学习算法

    [译者注]在当下人工智能火爆发展的局面,每时每刻都有新的技术在诞生,但如果你是一个新手,Weka或许能帮助你直观.快速的感受机器学习带来的解决问题的新思路. Weka使机器学习的应用变得简单.高效并且 ...

  4. Kylin高级主题-Cube构建算法介绍(逐层算法和快速算法)

    Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据.它能在亚秒内查询巨大的Hive表.本文将详细介绍Apache Ky ...

  5. Java排序算法——选择排序

    Java排序算法--选择排序(Selection sort) 传送门 冒泡排序 插入排序 简述 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找 ...

  6. python比c语言开发速度快多少倍_Python语言其实很慢,为什么机器学习这种快速算法步骤通常还是用呢?...

    原标题:Python语言其实很慢,为什么机器学习这种快速算法步骤通常还是用呢? 作为python的忠实粉丝,看见这个题目就情不自禁想怼回去.鉴于和谐社会,我决定慢慢讲道理. 首先,相对于c语言,pyt ...

  7. 图像相似性匹配 快速算法

    需求是库内存有部分版权图片,现在搜索网上是否有侵权图片.因此从网上跑去大量图片和库内的版权图片比较,由于比较数量大,对效率有一定的要求. 方法1: 关键点匹配(Keypoint Matching) 一 ...

  8. Java排序算法:冒泡排序

    Java排序算法:冒泡排序 //创建数组并赋值int[] data = new int[] {11,10,55,78,100,111,45,56,79,90,345,1000};for(int i=0 ...

  9. Java排序算法总结

    稳定排序: * 泡沫排序(bubble sort) - O(n²) * 插入排序 (insertion sort)- O(n²) * 桶排序 (bucket sort)- O(n); 需要 O(k)  ...

最新文章

  1. Java项目:学生学科竞赛管理管理系统设计和实现(java+springboot+ssm+maven)
  2. 记录,一些jar包的作用
  3. 局域网连接SQL Server数据库配置
  4. 缩减oracle日志,[20180829]减少日志生成量.txt
  5. PHP-Manual的学习----【语言参考】----【类型】-----【对象】
  6. android 返回销毁活动,android返回活动时会被销毁并且不会恢复
  7. html可以用坐标画svg图吗,HTML5如何使用SVG的方法示例
  8. [转]网易云音乐Android版使用的开源组件
  9. L2-030 冰岛人 (25 分)-PAT 团体程序设计天梯赛 GPLT
  10. js方法实现rgb颜色转换成16进制格式的代码的方法
  11. python学习笔记--python数据类型
  12. 大篆汉字对照表_篆书转换器软件下载(篆体字转换汉字对照表)
  13. 动易html在线编辑器,动易CMS静态页调用FCK编辑器的代码
  14. 问题解决:无法解析的外部符号 _imp_XXXXXXXXX
  15. 关于运行软件报错Address already in use
  16. 什么是java?以及java的初步简单学习
  17. #include中用双引号和用尖括号括起来头文件的区别
  18. 【LA3523 训练指南】圆桌骑士 【双连通分量】
  19. 浅谈WaterMark
  20. RT_thread 独立看门狗 watchdog 不断自动复位的解决方法

热门文章

  1. Java SecurityManager getThreadGroup()方法与示例
  2. 在Java中使用Collat​​or和String类进行字符串比较
  3. 芭比扣了!Nacos中服务删除不了,肿么办?
  4. 有序集合使用与内部实现原理
  5. javascript数组去重方法汇总
  6. 【faster rcnn 实现via的自动框人】使用detectron2中faster rcnn 算法生成人的坐标,将坐标导入via(VGG Image Annotator)中,实现自动框选出人的区域
  7. Windows10 64位 安装 Postgresql 数据库
  8. 玩玩机器学习5——构造单层神经网络解决非线性函数(三次函数)的曲线拟合
  9. C#中? 、?? 、?. 、??= 的用法和说明
  10. [SCOI2009]生日礼物 单调性尺取法