基本思想:每次将一个数temp作为基准,
然后从最右边往左找到一个比temp小的数,
然后再从左往右找到一个比temp大的数,
此时如果俩数没有相遇,就交换,若相遇,
就将相遇位置的数跟基准交换,然后采用二分法,分别递归左半边跟右半边
//快速排序
public class Algorithm{static int []arr={1,3,2,5,7,3,8};
public static void main(String[] args) {
quickSort(0,arr.length-1);
for(int i:arr)
System.out.println(i);
}
private static void quickSort(int left, int right) {
if(left>right)
return ;
int temp=arr[left];//temp作为基准
int i=left;
int j=right;
while(i!=j){
//从右向左比较,找出比temp小的数
while(arr[j]>=temp&&i<j)
j--;
//从左往右找,找出比temp大的数
while(arr[i]<=temp&&i<j)
i++;
//左右各自找完之后,进行交换
if(i<j){
int t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
//让基数进行归位
arr[left]=arr[i];
arr[i]=temp;
quickSort(left,i-1);
quickSort(i+1,right);
}
}
本文详细介绍了一种高效的排序算法——快速排序。通过选取基准值并基于该值对数组进行划分,进而递归地对子数组进行排序,实现了较高的排序效率。文章提供了具体的实现代码,并展示了排序过程。
&spm=1001.2101.3001.5002&articleId=53319636&d=1&t=3&u=f67e51ab8e634c6a83440cd2fabb585e)

被折叠的 条评论
为什么被折叠?



