用JAVA写个快速排序
时间: 2023-04-02 12:03:32 浏览: 50
我不是很清楚,但是我可以提供你一些关于用Java写快速排序的参考资料: 1. https://www.baeldung.com/java-quicksort
2. https://www.geeksforgeeks.org/quick-sort/
3. https://www.tutorialspoint.com/data_structures_algorithms/quick_sort_algorithm.htm
相关问题
用java写个快速排序
### 回答1:
好的,以下是用Java编写快速排序的代码:
```java
public class QuickSort {
public static void sort(int[] arr, int low, int high) {
if (arr == null || arr.length == 0 || low >= high) {
return;
}
int middle = low + (high - low) / 2;
int pivot = arr[middle];
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) {
sort(arr, low, j);
}
if (high > i) {
sort(arr, i, high);
}
}
public static void main(String[] args) {
int[] arr = {5, 3, 8, 4, 2, 7, 1, 10, 6, 9};
sort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
}
```
这是一个简单的快速排序算法,它使用递归将数组分成较小的子数组并排序它们。该算法的平均时间复杂度为O(nlogn),是一种高效的排序算法。
### 回答2:
快速排序是一种常见的排序算法,也是一种高效的排序算法之一。下面是用Java语言实现快速排序的代码:
```java
public class QuickSort {
public static void main(String[] args) {
int[] arr = {5, 2, 8, 7, 1, 3};
quickSort(arr, 0, arr.length - 1);
System.out.println("排序后的数组:");
for (int num : arr) {
System.out.print(num + " ");
}
}
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[low];
while (low < high) {
while (low < high && arr[high] >= pivot) {
high--;
}
arr[low] = arr[high];
while (low < high && arr[low] <= pivot) {
low++;
}
arr[high] = arr[low];
}
arr[low] = pivot;
return low;
}
}
```
上述代码实现了快速排序算法,其中`quickSort`函数是主方法,用来递归调用自身来实现排序。`partition`函数用来选择一个基准值(pivot)并将数组中比其小的数放在左边,比其大的数放在右边。然后再对左右两个子数组进行递归排序,直到排序完成。
以上是用Java语言实现快速排序的代码,可以在程序中添加自定义的数组来验证算法的正确性。
### 回答3:
快速排序是一种常见的排序算法,它通过将数组分成较小的子数组,然后对这些子数组进行排序,最后将它们合并起来以得到最终排序的结果。
在Java中,可以使用递归的方式实现快速排序。下面是一个用Java编写的快速排序算法的示例代码:
```
public class QuickSort {
public static void main(String[] args) {
int[] arr = {5, 2, 9, 1, 7, 6, 4, 8, 3};
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++;
swap(arr, i, j);
}
}
swap(arr, i + 1, right);
return i + 1;
}
public static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
```
以上代码定义了一个名为QuickSort的类,其中包含了三个方法:quickSort方法用于递归地进行快速排序,partition方法用于选择一个枢轴并进行分区,swap方法用于交换数组中两个元素的位置。
在main方法中,我们定义了一个待排序的数组,并调用quickSort方法对其进行快速排序。最后,我们输出排序后的结果。
该快速排序算法的时间复杂度为O(n log n),其中n为数组的长度。它是一种高效的排序算法,常被用于实际的应用中。
用Java写个快速排序
好的,我可以回答这个问题。快速排序是一种常用的排序算法,它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后再分别对这两部分记录继续进行排序,以达到整个序列有序的目的。以下是用 Java 实现快速排序的代码:
```
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[left];
while (left < right) {
while (left < right && arr[right] >= pivot) {
right--;
}
arr[left] = arr[right];
while (left < right && arr[left] <= pivot) {
left++;
}
arr[right] = arr[left];
}
arr[left] = pivot;
return left;
}
```
这段代码实现了快速排序的核心部分,其中 partition 方法用于将待排记录分隔成独立的两部分,quickSort 方法则用于递归地对这两部分记录进行排序。