Java排序算法之--快速算法--快速上手
何为快速算法:它是冒泡排序的改进~
基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
算法的整个处理过程如下:
核心思想:基准数不断不断归位的过程(右边大于基准数,左边小于基准数):
当基准数为左边第一个数时,(从右边向左开始扫描,当扫描到小于基准数的时候,暂停扫描,此时数组下标为j
轮到左边往右边扫描,当扫描到大于基准数的时候,暂停扫描,此时数组下标为i,交换i与j下标的数值),继续“()”的步骤。
什么时候截止呢?当i=j时,将基准数base与i所指的数交换,然后不断的迭代这个过程。
当基准数为左边第一个数时,(从右边向左开始扫描,当扫描到小于基准数的时候,暂停扫描,此时数组下标为j
轮到左边往右边扫描,当扫描到大于基准数的时候,暂停扫描,此时数组下标为i,交换i与j下标的数值),继续“()”的步骤。
什么时候截止呢?当i=j时,将基准数base与i所指的数交换,然后不断的迭代这个过程。
算法实现如下:
- public static void quickSort(int [] a, int left, int right) {
- int i, j, t, base;
- if (left > right)
- return;
- base = a[left]; // base中存的就是基准数
- i = left; // 设置左右两个参数
- j = right;
- while (i != j) {
- //要先从右边开始找
- while (a[j] >= base && i < j)
- j--;
- // 再找左边的
- while (a[i] <= base && i < j)
- i++;
- // 交换两个数在数组中的位置
- if (i < j) {
- t = a[i];
- a[i] = a[j];
- a[j] = t;
- }
- }
- // 最终将基准数归位
- a[left] = a[i];
- a[i] = base;
- quickSort(a, left, i - 1);// 继续处理左边的,这里是一个递归的过程
- quickSort(a, i + 1, right);// 继续处理右边的 ,这里是一个递归的过程
- }
http://blog.csdn.net/sunhuaqiang1/article/details/52059322有时间可参考此链接
Java排序算法之--快速算法--快速上手相关推荐
- 排序算法之----快速排序(快速上手快速排序)
排序算法之----快速排序(快速上手快速排序) 何为快速排序算法? 快速排序的基本思想又是什么? 其实很简单: 快速排序的基本思想是 1.先从数列中取出一个数作为基准数(这里我们的算法里面取数组最右边 ...
- 算法基础、算法比赛快速入门(java)
想用Java快速入门算法?这篇文章你得看! 提示:本文章适合想要入门算法,并且想 "快速" 达到一定成果的同学们阅读~ 文章非常非常非常长(可能是你见过最长的算法基础篇章)!!! ...
- weka java 分类算法_使用Weka快速实践机器学习算法
[译者注]在当下人工智能火爆发展的局面,每时每刻都有新的技术在诞生,但如果你是一个新手,Weka或许能帮助你直观.快速的感受机器学习带来的解决问题的新思路. Weka使机器学习的应用变得简单.高效并且 ...
- Kylin高级主题-Cube构建算法介绍(逐层算法和快速算法)
Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据.它能在亚秒内查询巨大的Hive表.本文将详细介绍Apache Ky ...
- Java排序算法——选择排序
Java排序算法--选择排序(Selection sort) 传送门 冒泡排序 插入排序 简述 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找 ...
- python比c语言开发速度快多少倍_Python语言其实很慢,为什么机器学习这种快速算法步骤通常还是用呢?...
原标题:Python语言其实很慢,为什么机器学习这种快速算法步骤通常还是用呢? 作为python的忠实粉丝,看见这个题目就情不自禁想怼回去.鉴于和谐社会,我决定慢慢讲道理. 首先,相对于c语言,pyt ...
- 图像相似性匹配 快速算法
需求是库内存有部分版权图片,现在搜索网上是否有侵权图片.因此从网上跑去大量图片和库内的版权图片比较,由于比较数量大,对效率有一定的要求. 方法1: 关键点匹配(Keypoint Matching) 一 ...
- Java排序算法:冒泡排序
Java排序算法:冒泡排序 //创建数组并赋值int[] data = new int[] {11,10,55,78,100,111,45,56,79,90,345,1000};for(int i=0 ...
- Java排序算法总结
稳定排序: * 泡沫排序(bubble sort) - O(n²) * 插入排序 (insertion sort)- O(n²) * 桶排序 (bucket sort)- O(n); 需要 O(k) ...
最新文章
- Java项目:学生学科竞赛管理管理系统设计和实现(java+springboot+ssm+maven)
- 记录,一些jar包的作用
- 局域网连接SQL Server数据库配置
- 缩减oracle日志,[20180829]减少日志生成量.txt
- PHP-Manual的学习----【语言参考】----【类型】-----【对象】
- android 返回销毁活动,android返回活动时会被销毁并且不会恢复
- html可以用坐标画svg图吗,HTML5如何使用SVG的方法示例
- [转]网易云音乐Android版使用的开源组件
- L2-030 冰岛人 (25 分)-PAT 团体程序设计天梯赛 GPLT
- js方法实现rgb颜色转换成16进制格式的代码的方法
- python学习笔记--python数据类型
- 大篆汉字对照表_篆书转换器软件下载(篆体字转换汉字对照表)
- 动易html在线编辑器,动易CMS静态页调用FCK编辑器的代码
- 问题解决:无法解析的外部符号 _imp_XXXXXXXXX
- 关于运行软件报错Address already in use
- 什么是java?以及java的初步简单学习
- #include中用双引号和用尖括号括起来头文件的区别
- 【LA3523 训练指南】圆桌骑士 【双连通分量】
- 浅谈WaterMark
- RT_thread 独立看门狗 watchdog 不断自动复位的解决方法
热门文章
- Java SecurityManager getThreadGroup()方法与示例
- 在Java中使用Collat​​or和String类进行字符串比较
- 芭比扣了!Nacos中服务删除不了,肿么办?
- 有序集合使用与内部实现原理
- javascript数组去重方法汇总
- 【faster rcnn 实现via的自动框人】使用detectron2中faster rcnn 算法生成人的坐标,将坐标导入via(VGG Image Annotator)中,实现自动框选出人的区域
- Windows10 64位 安装 Postgresql 数据库
- 玩玩机器学习5——构造单层神经网络解决非线性函数(三次函数)的曲线拟合
- C#中? 、?? 、?. 、??= 的用法和说明
- [SCOI2009]生日礼物 单调性尺取法