package com.lxj.alg;
public class QuickSorted {
public static void main(String[] args) {
int [] array = {545,654,2,-11,24,745,58,35,64,75,253,35};
//int [] array = {10,9,8,7,6,5,4,3,2,1,0};
quickSorted(array,0,array.length-1);
for (int i : array) {
System.out.print(i+" ");
}
}
private static void quickSorted(int[] array, int start, int end) {
if(start < end) {
//lookForLocation 返回一趟快速排序的结果,
//也就是确定了边界线(边界线实际上就是你用来比较的靶子)左边的比右边的都小
int loc = lookForLocation(array,start,end);
//类似二分法,递归分治的思想,靶子左边和右边的分别继续递归排序
quickSorted(array,start,loc-1);
quickSorted(array,loc+1,end);
}
}
private static int lookForLocation(int[] array, int start, int end) {
int i = start,j = end;
//temp就是靶子,也就是我用来分割的基准,
//我用的是array中的第一个元素来进行左边跟右边的划分
//好比: 44,33,25,67 44是我的基准,这一趟排序后我要将数组变成 25,33,44,67
int temp = array[start];
JAVA实现快速排序
最新推荐文章于 2024-06-20 23:50:49 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)