专业的JAVA编程教程与资源

网站首页 > java教程 正文

排序算法——快排(快速排序算法实例讲解)

temp10 2024-10-09 20:42:18 java教程 11 ℃ 0 评论

我们今天来共同学习快速排序,快速排序和之前说的归并排序在思想上有些类似,都是使用了分治法和递归来进行排序的。那么快速排序是怎么样的呢?

快速排序实际上就是 先选出一个标杆,其他数字和这个标杆进行对比,比他大的放在他的右边,比他小的放在它的左边,当我们难点就是如何让这个标杆就位,简单的说就是左右逼近,标杆在左边,从右向左遍历,标杆在右边,数据从左向右遍历,当遇到和它不符合条件的数据时,进行交换。直至标杆就位,然后对左右两边进行分治操作,再次选出一个标杆,进行排序交换。

排序算法——快排(快速排序算法实例讲解)

举例:

以{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 排序完成

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表