用JAVA写一个快速排序
时间: 2023-09-08 09:05:16 浏览: 83
用java实现快速排序
### 回答1:
答:Java中的快速排序算法可以用以下步骤来实现:1. 从数列中挑选一个基准值;
2. 将所有比基准值小的放在基准值的左边,所有比基准值大的放在基准值的右边;
3. 对基准值左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
### 回答2:
快速排序是一种常用的排序算法,它的基本思想是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的数据小,然后再按此方法对这两部分数据分别进行快速排序,整个过程递归进行,直到排序完成。
以下是用JAVA实现快速排序的代码:
```java
public class QuickSort {
public static void main(String[] args) {
int[] arr = {6, 7, 3, 8, 2, 9, 1, 5, 4};
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;
}
}
```
以上是一个使用递归实现快速排序的JAVA程序,首先在main方法中定义了一个待排序的整型数组arr,并调用quickSort方法进行排序。quickSort方法中首先根据给定的起始索引low和结束索引high,利用partition方法获取pivot分区点,并递归调用quickSort方法对分别对pivot的左右两部分进行排序。partition方法是用来找到pivot,并通过交换元素的方式将数组分割成左右两部分。最后在main方法中打印排序结果。
### 回答3:
快速排序(Quick Sort)是一种常见的排序算法,采用分治的思想进行排序。下面是用Java编写的快速排序算法示例:
```java
public class QuickSort {
public static void quickSort(int[] arr, int left, int right) {
if (left < right) {
int partitionIndex = partition(arr, left, right);
quickSort(arr, left, partitionIndex - 1);
quickSort(arr, partitionIndex + 1, right);
}
}
private 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;
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static void main(String[] args) {
int[] arr = { 64, 34, 25, 12, 22, 11, 90 };
int n = arr.length;
quickSort(arr, 0, n - 1);
System.out.println("排序后的数组:");
for (int i : arr)
System.out.print(i + " ");
}
}
```
上述代码中,`quickSort`方法接受一个整数数组`arr`、待排序子数组的左右边界`left`和`right`作为参数,使用递归的方式进行快速排序。`partition`方法则实现了数组划分的过程,将数组分为两个部分:左侧的部分小于基准值,右侧的部分大于基准值。`swap`方法用于交换数组中两个位置的元素。最后,`main`方法使用示例数组进行测试,并输出排序后的结果。
快速排序算法的时间复杂度为O(nlogn),空间复杂度为O(logn)。
阅读全文