给出快速排序java代码
时间: 2023-09-04 17:04:19 浏览: 107
java冒泡排序和快速排序代码
### 回答1:
我推荐使用以下代码来快速排序: 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;
for (int j = left; j < right; j++) {
if (arr[j] <= pivot) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
}
}
int temp = arr[i];
arr[i] = arr[right];
arr[right] = temp;
return i;
}
}
### 回答2:
快速排序是一种基于分治策略的排序算法,它的基本思想是通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据均比另一部分的所有数据小,然后再按此方法对两部分数据分别进行快速排序,整个过程递归进行,最终得到有序序列。
下面是用Java编写的快速排序代码:
```java
public class QuickSort {
public static void quickSort(int[] arr, int low, int high) {
if (low < high) {
int pivotIndex = partition(arr, low, high);
quickSort(arr, low, pivotIndex - 1);
quickSort(arr, pivotIndex + 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++;
swap(arr, i, j);
}
}
swap(arr, i + 1, high);
return i + 1;
}
public 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 = {5, 2, 9, 3, 7, 6, 1, 8, 4};
quickSort(arr, 0, arr.length - 1);
for (int num : arr) {
System.out.print(num + " ");
}
}
}
```
在上述代码中,我们定义了一个`quickSort`方法来实现快速排序算法。`quickSort`方法首先判断`low`是否小于`high`,如果是,则进行分区操作,并将数组划分为左右两部分。接下来,递归地调用`quickSort`方法对左右两部分进行排序。`partition`方法用于确定分区点,并将小于等于分区点的元素放在左边,大于分区点的元素放在右边。最后,通过`swap`方法交换元素位置。在`main`方法中,我们定义一个待排序数组`arr`并调用`quickSort`方法对其进行排序,然后打印排序后的结果。
以上就是快速排序的Java代码实现。
### 回答3:
快速排序(QuickSort)是一种常用的排序算法,它采用分治的策略,将一个待排序的序列分成两个子序列,然后分别对子序列进行排序,最后合并得到有序序列。以下是一个简单的快速排序的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++;
swap(arr, i, j); // 交换元素位置
}
}
swap(arr, i + 1, high); // 将基准值放置正确的位置
return i + 1; // 返回基准值的索引
}
public 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 = {10, 7, 8, 9, 1, 5};
int n = arr.length;
quickSort(arr, 0, n - 1);
System.out.println("排序后的数组:");
for (int num : arr) {
System.out.print(num + " ");
}
}
}
```
以上代码通过将数组分为两部分,比较基准值和其它元素的大小,然后递归调用排序左右子数组的方式实现快速排序。代码中使用了选择最后一个元素作为基准值,并通过分界点的方式将小于基准值的元素放在基准值之前,大于基准值的元素放在基准值之后。最后输出排序后的数组。
阅读全文