java快速排序

导读 快速排序是一种高效的排序算法,其基本思想是采用分治法。在Java中,快速排序的实现可以如下所示:```javapublic class QuickSort { ...

快速排序是一种高效的排序算法,其基本思想是采用分治法。在Java中,快速排序的实现可以如下所示:

```java

public class QuickSort {

public static void quickSort(int[] arr, int low, int high) {

if (low < high) {

// pi 是分区索引,arr[pi] 的位置已经确定了

int pi = partition(arr, low, high);

// 通过递归调用分别对pi的左右两部分进行排序

quickSort(arr, low, pi - 1);

quickSort(arr, pi + 1, high);

}

}

public static int partition(int[] arr, int low, int high) {

// 选择最后一个元素作为主元(pivot)

int pivot = arr[high];

int i = (low - 1); // 小于pivot的元素的索引

for (int j = low; j < high; j++) {

// 如果当前元素小于等于pivot

if (arr[j] <= pivot) {

i++;

// 交换 arr[i] 和 arr[j] 的位置

swap(arr, i, j);

}

}

// 交换 arr[i+1] 和 arr[high](或pivot)的位置,确保pivot处于正确的位置

swap(arr, i + 1, high);

return i + 1; // 返回pivot的位置,这个位置已经确定了

}

//交换数组中的两个元素的方法,可以单独抽出来作为工具类方法使用。 也可以直接在 partition 方法内使用匿名方法。看实际需求而定。

public static void swap(int[] arr, int i, int j) {

int temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

}

}

```

使用快速排序时,你可以创建一个数组并调用 `quickSort` 方法进行排序。例如:

```java

public class Main {

public static void main(String[] args) {

int[] arr = {10, 7, 8, 9, 1, 5}; // 待排序数组

QuickSort.quickSort(arr, 0, arr.length - 1); // 对数组进行排序操作

for (int i = 0; i < arr.length; i++) { // 打印排序后的数组元素

System.out.print(arr[i] + " ");

}

}

}

```

版权声明:本文由用户上传,如有侵权请联系删除!