通过java实现快排
时间: 2023-03-03 22:13:10 浏览: 201
好的,以下是通过 Java 实现快速排序的示例代码:
```java
public class QuickSort {
public static void main(String[] args) {
int[] arr = { 5, 3, 8, 4, 2 };
quickSort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
public static void quickSort(int[] arr, int left, int right) {
if (left < right) {
int pivotIndex = partition(arr, left, right);
quickSort(arr, left, pivotIndex - 1);
quickSort(arr, pivotIndex + 1, right);
}
}
public static int partition(int[] arr, int left, int right) {
int pivot = arr[right];
int i = left - 1;
for (int j = left; j < right; j++) {
if (arr[j] < pivot) {
i++;
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int temp = arr[i + 1];
arr[i + 1] = arr[right];
arr[right] = temp;
return i + 1;
}
}
```
这个示例程序定义了两个方法,`quickSort` 和 `partition`。`quickSort` 方法是快速排序的主体,而 `partition` 方法则是用来对数组进行分区的。
快速排序的主体思路是选择一个枢轴(pivot),然后将数组分为两个子数组,其中一个子数组的元素都比枢轴小,另一个子数组的元素都比枢轴大。然后对这两个子数组分别进行递归调用,直到子数组的大小为 1 或 0。
`partition` 方法的实现中,我们选择了最后一个元素作为枢轴。然后我们遍历数组,将比枢轴小的元素放在左边,比枢轴大的元素放在右边。最后我们将枢轴元素放在中间,这样就完成了一次分区。