当前位置: 代码迷 >> 综合 >> 快排算法用java实现
  详细解决方案

快排算法用java实现

热度:12   发布时间:2023-09-14 15:35:53.0
import java.util.Arrays;//手写快速排序
public class QuickSort {public static void main(String[] args) {int[] arr = {2, 4, 8, 3, 5, 9, 1};System.out.println(Arrays.toString(arr));quickSort(arr, 0, arr.length - 1);System.out.println(Arrays.toString(arr));}/*** @param arr   传入的数组* @param left  数组的最左下标* @param right 数组的最右下标*/public static void quickSort(int[] arr, int left, int right) {/**选择中间位置为基准*/int l = left;int r = right;int standard = arr[(l + r) / 2];//遍历整个数组while (l < r) {/**从左往右遍历,直到找到比中间值大的*/while (arr[l] < standard) {l += 1;}/**从右往左遍历,直到找到比中间值小的*/while (arr[r] > standard) {r -= 1;}/**判断是否越过中间值* 越界说明中间值左边的都是*/if (l >= r) {break;}/**交换数据*/int temp = arr[l];arr[l] = arr[r];arr[r] = temp;}/**说明下标为l/r的数值已经是整个数组的中间值了,无需再动位置*/if (l == r) {l += 1;r -= 1;}/**向左递归*/if (left < r) {quickSort(arr, left, r);}/**向右递归*/if (right > l) {quickSort(arr, l, right);}}
}