网站首页 > java教程 正文
我们今天来共同学习快速排序,快速排序和之前说的归并排序在思想上有些类似,都是使用了分治法和递归来进行排序的。那么快速排序是怎么样的呢?
快速排序实际上就是 先选出一个标杆,其他数字和这个标杆进行对比,比他大的放在他的右边,比他小的放在它的左边,当我们难点就是如何让这个标杆就位,简单的说就是左右逼近,标杆在左边,从右向左遍历,标杆在右边,数据从左向右遍历,当遇到和它不符合条件的数据时,进行交换。直至标杆就位,然后对左右两边进行分治操作,再次选出一个标杆,进行排序交换。
举例:
以{4,6,1,8,3,5,7}为例,我们选出最右的4为标杆,从右开始遍历,遇到比4小的数字进行交换。 4<7 符合条件,不交换;4<5 符合条件,不交换,4>3 进行交换 得到:{3,6,1,8,4,5,7}。
我们可以发现我们的标杆4到了右边,从6开始,向右遍历,此时,遇到比4大的进行交换;4<6, 进行交换 {3,4,1,8,6,5,7}
重复操作 4>1 交换 {3,1,4,8,6,5,7} 4<8 此时不进行交换
我们标杆位置 4 不变 左右两边进行分治 {3,1} 4 {8,6,5,7}
重复以上操作 3>1 交换 {1,3} ,我们可以得到{1},3,4 {8,6,5,7}
{1}为单个数组,不进行遍历 1,3,4 {8,6,5,7}
对 {8,6,5,7} 进行操作 {7,6,5,8} 得到1,3,4,{7,6,5} 8
同理 1,3,4,{5,6} 7,8
最终 1,3,4,5,6,7,8 排序完成
猜你喜欢
- 2024-10-09 一遍记住 8 种排序算法与 Java 代码实现
- 2024-10-09 java程序员必知的八大排序(java编程排序算法实现)
- 2024-10-09 Java实现堆排序(java堆排序算法代码)
- 2024-10-09 插入排序算法,就这么简单,还学不会算我输
- 2024-10-09 程序员必知的十大基础实用算法之-快速排序算法
- 2024-10-09 【数据结构与算法】十大经典排序算法-快速排序
- 2024-10-09 经常用到的的排序(快速排序和归并排序)简单的计算机算法学习
- 2024-10-09 七种基于比较的排序,基于Java实现,收藏一下?
- 2024-10-09 十大经典排序算法动画与解析,看我就够了!(配代码完全版)
- 2024-10-09 看动图学算法(六):快速排序的原理和Java讲解
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)