admin 管理员组文章数量: 887042
2024年1月11日发(作者:sqlserver只能下载到c盘吗)
Java 数组排序算法详解
Java 数组排序算法是 Java 语言中一个重要的组成部分,是进行数据排序的重要工具。Java 提供了多种数组排序算法,包括快速排序、归并排序、堆排序等。本文将对 Java 数组排序算法进行详细介绍,并针对不同的算法提供具体的实现代码。
一、快速排序
快速排序是一种常用的排序算法,它采用分治的思想,通过递归地将数组划分为较小和较大的两个子数组,然后递归地排序两个子数组。快速排序是不稳定的排序算法,其平均时间复杂度为 O(nlogn)。
快速排序的实现代码如下:
```java
public static void quickSort(int[] arr, int left, int right)
{
if (left < right) {
int pivotIndex = partition(arr, left, right);
quickSort(arr, left, pivotIndex - 1);
quickSort(arr, pivotIndex + 1, right);
}
}
private static int partition(int[] arr, int left, int right)
{
int pivot = arr[left];
int i = left + 1;
int j = right;
while (i <= j) {
while (i <= j && arr[i] < pivot) {
i++;
}
while (i <= j && arr[j] > pivot) {
j--;
}
if (i <= j) {
swap(arr, i, j);
i++;
j--;
}
}
swap(arr, left, j);
return j;
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
```
二、归并排序
归并排序是一种高效的排序算法,它采用分治的思想,将数组划分为较小和较大的两个子数组,然后递归地排序两个子数组。归并排序是稳定的排序算法,其平均时间复杂度为 O(nlogn)。
归并排序的实现代码如下:
```java
public static void mergeSort(int[] arr, int left, int right)
{
if (left < right) {
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 n1 = mid - left + 1;
int n2 = right - mid;
int[] L = new int[n1];
int[] R = new int[n2];
for (int i = 0; i < n1; i++) {
L[i] = arr[left + i];
}
for (int j = 0; j < n2; j++) {
R[j] = arr[mid + 1 + j];
}
int i = 0;
int j = 0;
int k = left;
while (i < n1 && j < n2) {
if (L[i] <= R[j]) {
arr[k] = L[i];
i++;
} else {
arr[k] = R[j];
j++;
}
k++;
}
while (i < n1) {
arr[k] = L[i];
i++;
k++;
}
while (j < n2) {
arr[k] = R[j];
j++;
k++;
}
}
```
三、堆排序
堆排序是一种基于二叉堆的排序算法,它采用递归地建立大根堆和小根堆,然后将堆顶元素和堆底元素交换,然后再把剩余的元素重新调整为堆。堆排序是不稳定的排序算法,其平均时间复杂度为
O(nlogn)。
版权声明:本文标题:java数组排序sort方法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1704984387h468582.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论