微信
支付宝
# 2.5 快速排序(Quick sort) ####
一. 定义 快速排序(Quick sort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 \*\*具体流程\*\* 1. 首先设定一个分界值,通过该分界值将数组分成左右两部分。 2. 将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值。 3. 然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。 4. 重复上述过程,可以看出,这是一个递归定义。通过递归将左侧部分排好序后,再递归排好右侧部分的顺序。当左、右两个部分各数据排序完成后,整个数组的排序也就完成了。 \*\*概括来说为 挖坑填数 + 分治法。\*\* \> 参考自:https://blog.csdn.net/justidle/article/details/104203963 #### 二. 代码实现 \*\*方法一:\*\*以第一个元素为枢轴 \`\`\`java /\*\* \* desc 快速排序 \* @author GreyPigeon mail:2371849349@qq.com \* @since 2024-01-12-21:56 \*\*/ public class QuickSort { public static void main(String\[\] args) { int\[\] arry = {9,2,7,6,5,8,3,2,1}; quickSort(arry,0, arry.length-1); System.out.println(Arrays.toString(arry)); } public static void quickSort(int\[\] arry,int left,int right){ //运行判断,如果左边索引大于右边是不合法的,直接return结束次方法 if(left\>right){ return; } //定义变量保存基准数(枢轴) int pivot = arry\[left\]; //定义变量i,指向最左边 int i = left; //定义j ,指向最右边 int j = right; //当i和j不相遇的时候,再循环中进行检索 while(i!=j){ //先由j从右往左检索比基准数小的,如果检索到比基准数小的就停下。 //i从左往右,如果检索到比基准数大的或者相等的就停下 while(arry\[j\]\>= pivot \&\& i
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Veylor
最近发布
常用SQL