jsva中的快速排序怎么写
时间: 2023-09-24 20:06:05 浏览: 78
### 回答1:
快速排序的Java代码实现大致如下:public static void quickSort(int[] arr, int low, int high) {
if (arr == null || arr.length == 0)
return;
if (low >= high)
return;
// 找寻基准数据的正确索引
int index = partition(arr, low, high);
// 进行迭代对index之前和之后的数组进行相同的操作使整个数组变成有序
quickSort(arr, low, index - 1);
quickSort(arr, index + 1, high);
}
private 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;
}
### 回答2:
快速排序是一种常用的排序算法,通过分治的思想将一个数组分成两部分,一部分比关键元素小,另一部分比关键元素大,然后递归地对这两部分进行排序,最终得到有序数组。
在 Java 中实现快速排序的主要步骤如下:
1. 选择一个枢轴元素(pivot),一般选择数组的第一个元素。
2. 定义两个指针,left 指向数组的第一个元素,right 指向数组的最后一个元素。
3. 从左到右遍历数组,当找到一个比枢轴元素大的元素时停下。
4. 从右到左遍历数组,当找到一个比枢轴元素小的元素时停下。
5. 交换左指针和右指针所指向的元素。
6. 重复步骤 3-5,直到 left 和 right 相遇。
7. 将枢轴元素与相遇位置的元素进行交换,此时枢轴元素左边的元素都比枢轴元素小,右边的元素都比枢轴元素大。
8. 递归地对枢轴元素左边和右边的子数组进行快速排序。
以下是 Java 代码实现快速排序的示例:
```
public class QuickSort {
public static void quickSort(int[] array, int low, int high) {
if (low < high) {
int pivotIndex = partition(array, low, high);
quickSort(array, low, pivotIndex - 1);
quickSort(array, pivotIndex + 1, high);
}
}
public static int partition(int[] array, int low, int high) {
int pivot = array[low];
int left = low + 1;
int right = high;
while (left <= right) {
while (left <= right && array[left] < pivot) {
left++;
}
while (left <= right && array[right] >= pivot) {
right--;
}
if (left < right) {
int temp = array[left];
array[left] = array[right];
array[right] = temp;
}
}
int temp = array[right];
array[right] = pivot;
array[low] = temp;
return right;
}
public static void main(String[] args) {
int[] array = {5, 2, 9, 1, 3, 8, 4, 7, 6};
quickSort(array, 0, array.length - 1);
for(int num : array) {
System.out.print(num + " ");
}
}
}
```
以上是快速排序的 Java 实现,通过递归地对子数组进行排序,最终可以得到一个有序的数组。
### 回答3:
快速排序是一种常用的排序算法,它通过将一个数组分成较小和较大的两部分,然后分别对这两部分进行递归排序,最终将整个数组排序。以下是使用Java语言编写快速排序的示例代码。
```java
public class QuickSort {
public static void main(String[] args) {
int[] array = {9, 5, 1, 8, 3, 7, 4, 6, 2};
quickSort(array, 0, array.length - 1);
System.out.print("排序结果: ");
for(int num : array) {
System.out.print(num + " ");
}
}
public static void quickSort(int[] array, int low, int high) {
if(low < high) {
int pivotIndex = partition(array, low, high); // 将数组划分成两部分
quickSort(array, low, pivotIndex - 1); // 对左侧子数组进行快速排序
quickSort(array, pivotIndex + 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;
}
}
```
以上就是使用Java编写快速排序的示例代码。快速排序算法的核心思想是通过选取一个基准值,然后将比基准值小的元素放到基准值的左边,比基准值大的元素放到基准值的右边,然后对左右两部分分别进行递归排序,最终实现整个数组的排序。