当前位置: 代码迷 >> 综合 >> Java版——快速排序详解
  详细解决方案

Java版——快速排序详解

热度:16   发布时间:2023-10-27 07:04:32.0

快排 是我们平时经常会用到的算法,今天来解析下运算过程

解析:1.对一个数组进行进行快排,首先在数组中选定一个基址(base),start(待排区间首部,一开始我们定为0),end(待排区间尾部)。

            2.i和j分别从首尾开始

下面是代码(数组版)

package sort;/*** 快速排序* @author pual* 2018-3-23*/
public class QuickSort {private static void swap(int[] data, int i, int j) {int temp = data[i];data[i] = data[j];data[j] = temp;}private static void subSort(int[] data, int start, int end) {if (start < end) {// 9, -16, 21, 23, -30, -49, 21, 30, 30int base = data[start];int i = start;int j = end + 1;while (true) {while (i < end && data[++i] - base <= 0);while (j > start && data[--j] - base >= 0);if (i < j) {swap(data, i, j);} else {break;}}System.out.println(java.util.Arrays.toString(data));//[9, -16, -49, -30, 23, 21, 21, 30, 30]swap(data, start, j);subSort(data, start, j - 1);//递归调用subSort(data, j + 1, end);}}public static void quickSort(int[] data){subSort(data,0,data.length-1);}public static void main(String[] args) {int[] data = { 9, -16, 21, 23, -30, -49, 21, 30, 30 };System.out.println("排序之前:\n" + java.util.Arrays.toString(data));quickSort(data);System.out.println("排序之后:\n" + java.util.Arrays.toString(data));}
}