帮我写个java的快速排序吧
时间: 2023-09-10 21:05:38 浏览: 73
### 回答1:
好的,下面是Java的快速排序代码:
```
public class QuickSort {
public static void quickSort(int[] arr, int left, int right) {
if (left < right) {
int pivot = partition(arr, left, right);
quickSort(arr, left, pivot - 1);
quickSort(arr, pivot + 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;
}
public static void main(String[] args) {
int[] arr = { 5, 2, 9, 3, 7, 6, 1, 8, 4 };
quickSort(arr, , arr.length - 1);
for (int i = ; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
```
这个代码实现了快速排序算法,其中`quickSort`方法是递归调用的,`partition`方法是用来找到枢轴元素并将数组分成两部分的。在`main`方法中,我们可以看到如何使用这个算法对一个整数数组进行排序。
### 回答2:
下面是一个Java的快速排序算法的实现:
```
public class QuickSort {
public static void quickSort(int[] arr, int low, int high) {
if (arr == null || arr.length == 0) {
return;
}
if (low >= high) {
return;
}
// 选择基准元素
int pivot = arr[low + (high - low) / 2];
// 将数组分为两部分
int i = low, j = high;
while (i <= j) {
while (arr[i] < pivot) {
i++;
}
while (arr[j] > pivot) {
j--;
}
if (i <= j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
}
// 递归排序子数组
if (low < j) {
quickSort(arr, low, j);
}
if (high > i) {
quickSort(arr, i, high);
}
}
public static void main(String[] args) {
int[] arr = { 35, 16, 48, 9, 95, 22, 13, 77 };
int n = arr.length;
System.out.println("排序前: ");
for (int i = 0; i < n; i++) {
System.out.print(arr[i] + " ");
}
quickSort(arr, 0, n - 1);
System.out.println("\n排序后: ");
for (int i = 0; i < n; i++) {
System.out.print(arr[i] + " ");
}
}
}
```
这个快速排序算法使用递归的方式进行排序。首先,选择一个基准元素(可以选择数组中的任意一个元素),然后将数组分为两部分,左边的元素都小于基准元素,右边的元素都大于基准元素。接着,分别递归地对左半部分和右半部分进行快速排序,直到每个子数组都只剩下一个元素或为空。最后,将所有子数组的元素合并起来,得到排序后的数组。
### 回答3:
当然,下面是一个简单的Java快速排序的示例代码:
```java
public class QuickSort {
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;
}
public static void main(String[] args) {
int[] arr = {10, 7, 8, 9, 1, 5};
int n = arr.length;
quickSort(arr, 0, n - 1);
System.out.println("排序后的数组:");
for (int i = 0; i < n; ++i) {
System.out.print(arr[i] + " ");
}
}
}
```
以上代码实现了快速排序算法。快速排序是一种常用的排序算法,它的时间复杂度为O(nlogn)。在特定情况下,快速排序的性能可能会下降至O(n^2),但是它仍然是一种高效的排序算法。快速排序的核心是通过选取一个基准元素,将数组分为两部分,一部分小于基准元素,另一部分大于基准元素,并递归地对这两部分进行排序,最终得到一个有序的数组。以上代码演示了如何使用Java实现快速排序,并输出排序后的数组。希望对你有所帮助!
阅读全文