import java.util.Arrays;
public class Kuaisupaixu1 {
public static void main(String[] args) {
int[] arr= {4,7,6,5,3,2,9,1};
quickSort( arr,0,arr.length-1);
System.out.println(Arrays.toString(arr));
}
private static void quickSort(int[] arr, int startIndex, int endIndex) {
//递归结束条件startIndex>=endIndex的时候
if (startIndex>=endIndex) {
return;
}
//根据基准元素,分成两部分递归排序;
int pivotIndex=partition(arr,startIndex,endIndex);
quickSort(arr, startIndex, pivotIndex-1);
quickSort(arr, pivotIndex+1, endIndex);
}
private static int partition(int[] arr, int startIndex, int endIndex) {
//取第一个位置的元素作为基准元素;
int pivot =arr[startIndex];
int left=startIndex;
int right =endIndex;
while (left!=right) {
//控制right指针比较并左移;
while (left<right&&arr[right]>pivot) {
right--;
}
//控制left指针并比较右移
while (left<right&&arr[left]<=pivot) {
left++;
}
//交换left和right指向的元素;
if (left<right) {
int p=arr[left];
arr[left]=arr[right];
arr[right]=p;
}
}
//pivot和指针重合点交换
int p=arr[left];
arr[left]=arr[startIndex];
arr[startIndex]=p;
return left;
}
}
快速排序(java)
最新推荐文章于 2022-08-20 17:28:30 发布