java sort排序
时间: 2023-10-14 12:12:50 浏览: 45
Java提供了许多排序算法,其中最常用的是快速排序和归并排序。下面分别介绍这两种排序算法的实现方法。
1. 快速排序
快速排序使用分治法来进行排序,基本思想是选取一个基准元素,将数组分成左右两部分,左边部分所有元素都小于基准元素,右边部分所有元素都大于基准元素,然后对左右两部分分别递归进行快速排序。
Java中的Arrays.sort()方法使用的就是快速排序算法。
下面是快速排序的Java代码实现:
```java
public static void quickSort(int[] arr, int left, int right) {
if (left >= right) {
return;
}
int pivot = arr[left];
int i = left, j = right;
while (i < j) {
while (i < j && arr[j] >= pivot) {
j--;
}
arr[i] = arr[j];
while (i < j && arr[i] <= pivot) {
i++;
}
arr[j] = arr[i];
}
arr[i] = pivot;
quickSort(arr, left, i - 1);
quickSort(arr, i + 1, right);
}
```
2. 归并排序
归并排序也是一种分治算法,基本思想是将数组分成两部分,分别对这两部分进行归并排序,然后将这两部分合并成一个有序数组。
下面是归并排序的Java代码实现:
```java
public static void mergeSort(int[] arr, int left, int right) {
if (left >= right) {
return;
}
int mid = (left + right) / 2;
mergeSort(arr, left, mid);
mergeSort(arr, mid + 1, right);
merge(arr, left, mid, right);
}
private static void merge(int[] arr, int left, int mid, int right) {
int[] temp = new int[right - left + 1];
int i = left, j = mid + 1, k = 0;
while (i <= mid && j <= right) {
if (arr[i] <= arr[j]) {
temp[k++] = arr[i++];
} else {
temp[k++] = arr[j++];
}
}
while (i <= mid) {
temp[k++] = arr[i++];
}
while (j <= right) {
temp[k++] = arr[j++];
}
for (int p = 0; p < temp.length; p++) {
arr[left + p] = temp[p];
}
}
```
以上就是Java中快速排序和归并排序的实现方法。