请写一个快速排序 Java
时间: 2023-08-31 17:21:07 浏览: 90
### 回答1:
我提供一个快速排序 Java 的示例代码:public void quickSort(int[] array, int start, int end) {
if (array == null || array.length == 0)
return;
if (start >= end)
return;
int middle = start + (end - start) / 2;
int pivot = array[middle];
int i = start, j = end;
while (i <= j) {
while (array[i] < pivot) {
i++;
}
while (array[j] > pivot) {
j--;
}
if (i <= j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
i++;
j--;
}
}
if (start < j)
quickSort(array, start, j);
if (end > i)
quickSort(array, i, end);
}
### 回答2:
快速排序是一种高效的排序算法,其基本思想是通过选取一个基准元素,将待排序数组划分为两个子数组,一个子数组中的元素大于等于基准元素,另一个子数组中的元素小于等于基准元素。然后递归地对子数组进行排序,最后将排序好的子数组合并。
以下是一个简单的快速排序的Java实现:
```java
public class QuickSort {
public static void main(String[] args) {
int[] array = {9, 2, 5, 1, 7, 6, 8, 3, 4};
quickSort(array, 0, array.length - 1);
System.out.println("排序结果:");
for (int num : array) {
System.out.print(num + " ");
}
}
public static void quickSort(int[] array, int low, int high) {
if (low < high) {
int pivot = partition(array, low, high); // 划分操作
quickSort(array, low, pivot - 1); // 对左侧子数组进行快速排序
quickSort(array, pivot + 1, high); // 对右侧子数组进行快速排序
}
}
public static int partition(int[] array, int low, int high) {
int pivot = array[low]; // 选取第一个元素作为基准元素
while (low < high) {
while (low < high && array[high] >= pivot) {
high--;
}
array[low] = array[high]; // 将小于基准元素的元素放到低位
while (low < high && array[low] <= pivot) {
low++;
}
array[high] = array[low]; // 将大于基准元素的元素放到高位
}
array[low] = pivot; // 基准元素归位
return low; // 返回基准元素的位置
}
}
```
以上是快速排序算法的简单实现。在这个例子中,我们以数组的第一个元素为基准元素,进行划分操作。接着,递归地对左侧子数组和右侧子数组进行快速排序,直到排序完成。最后,我们输出排序结果。
### 回答3:
快速排序是一种常见且高效的排序算法。它基于分治的思想,将一个数组分成较小和较大的两部分,并递归地进行排序,直到整个数组有序。
以下是使用Java实现快速排序的示例代码:
```
public class QuickSort {
public static void main(String[] args) {
int[] arr = {9, 5, 7, 3, 2, 1, 6, 8, 4};
quickSort(arr, 0, arr.length - 1);
System.out.println("排序后的数组:");
for (int value : arr) {
System.out.print(value + " ");
}
}
public static void quickSort(int[] arr, int low, int high) {
if (low < high) {
int pivot = partition(arr, low, high);
quickSort(arr, low, pivot - 1);
quickSort(arr, pivot + 1, high);
}
}
public static int partition(int[] arr, int low, int high) {
int pivot = arr[high];
int i = low - 1;
for (int j = low; j < high; 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[high];
arr[high] = temp;
return i + 1;
}
}
```
以上是一个实现快速排序的Java程序。该程序首先定义了一个包含待排序元素的数组,然后调用`quickSort`方法进行排序。`quickSort`方法使用`partition`方法选取枢纽元(一般选取数组最后一个元素),将数组划分为两部分,并递归地对左右子数组进行排序。
最后,程序输出排序后的数组。
阅读全文