public class QuickSortUtils {
//快速排序
public static void quickSort(int[] arr, int start, int end) {
//找出分左右两区的所应位置,然后对左右两区进行递归调用
if (start < end) {
int index = getIndex(arr, start, end);
quickSort(arr, start, index - 1);
quickSort(arr, index + 1, end);
}
}
private static int getIndex(int[] arr, int start, int end) {
int i = start;
int j = end;
int x = arr[i];
while (i < j) {
//从前向后找比他小的数字
while (i < j && arr[j] >= x) {
j--;
}
if (i < j) {
arr[i] = arr[j];
i++;
}
//由前向后找他大于等于的数字
while (i < j && arr[i] < x) {
i++;
}
if (i < j) {
arr[j] = arr[i];
j--;
}
}
arr[i] = x;
return i;
}
}
public class MyTest {
public static void main(String[] args) {
int[] arr = {23, 12, 42, 11, 25, 32};
QuickSortUtils.quickSort(arr,0,arr.length);
System.out.println(Arrays.toString(arr));
}
}
Java——快排
最新推荐文章于 2023-11-06 15:07:56 发布