写一个三数取中的快速排序 JAVA代码
时间: 2023-03-14 15:21:49 浏览: 90
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];
int i = left;
int j = right;
while (i < j) {
while (i < j && arr[j] >= pivot)
j--;
while (i < j && arr[i] <= pivot)
i++;
if (i < j) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
arr[left] = arr[i];
arr[i] = pivot;
return i;
}
相关问题
写一个快速排序java代码
public class QuickSort {
public static void sort(int[] arr, int low, int high) {
if (arr == null || arr.length == 0)
return;
if (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);
}
}
java取第一个值的快速排序快速排序
快速排序是一种高效的排序算法,其思想是通过选择一个基准点,将数组划分为两部分,一部分小于等于基准点,另一部分大于等于基准点。然后对这两部分分别进行递归排序,最终得到有序数组。
要实现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[low];
int i = low + 1;
int j = high;
while (i <= j) {
while (i <= j && arr[i] <= pivot) {
i++;
}
while (i <= j && arr[j] >= pivot) {
j--;
}
if (i < j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int temp = arr[low];
arr[low] = arr[j];
arr[j] = temp;
return j;
}
public static void main(String[] args) {
int[] arr = {6, 1, 2, 7, 9, 3, 4, 5, 10, 8};
quickSort(arr, 0, arr.length - 1);
for (int num : arr) {
System.out.print(num + " ");
}
}
}
```
以上代码实现了取第一个元素为基准点的快速排序算法。你可以将待排序的数组传入quickSort方法中,指定初始的low和high值(low为数组的起始索引,high为数组的结束索引)。