Java 排序算法:深入解析和比较288
在软件开发中,排序算法是用来组织和排列数据结构的一种基本技术。Java 编程语言提供了多种排序算法,每种算法都有自己的优缺点。本文将深入探讨 Java 中最常用的排序算法,分析它们的复杂度、性能特点并提供代码示例。
选择排序
选择排序是一种简单易懂的排序算法。它通过反复找到序列中最小(或最大)元素并将其与当前位置交换的方式进行排序。选择排序的平均时间复杂度为 O(n^2),最坏情况复杂度也为 O(n^2)。
public static void selectionSort(int[] arr) {
int n = ;
for (int i = 0; i < n - 1; i++) {
int min = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[min]) {
min = j;
}
}
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
}
冒泡排序
冒泡排序是一种比较排序算法。它逐个比较相邻元素,并将较小的元素向前移动(或将较大的元素向后移动)。冒泡排序的平均时间复杂度为 O(n^2),最坏情况复杂度也为 O(n^2)。
public static void bubbleSort(int[] arr) {
int n = ;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
归并排序
归并排序是一种分治排序算法。它将序列分成子序列,对子序列进行递归排序,然后将排序好的子序列合并成一个排序好的序列。归并排序的平均时间复杂度和最坏情况复杂度均为 O(n log n)。
public static void mergeSort(int[] arr, int low, int high) {
if (low < high) {
int mid = (low + high) / 2;
mergeSort(arr, low, mid);
mergeSort(arr, mid + 1, high);
merge(arr, low, mid, high);
}
}
private static void merge(int[] arr, int low, int mid, int high) {
int[] temp = new int[high - low + 1];
int i = low;
int j = mid + 1;
int k = 0;
while (i
2024-10-22
Python字符串查找与判断:从基础到高级的全方位指南
https://www.shuihudhg.cn/134118.html
C语言如何高效输出字符串“inc“?深度解析printf、puts及格式化输出
https://www.shuihudhg.cn/134117.html
PHP高效获取CSV文件行数:从小型文件到海量数据的最佳实践与性能优化
https://www.shuihudhg.cn/134116.html
C语言控制台图形输出:从入门到精通的ASCII艺术实践
https://www.shuihudhg.cn/134115.html
Python在Linux环境下的执行与自动化:从基础到高级实践
https://www.shuihudhg.cn/134114.html
热门文章
Java中数组赋值的全面指南
https://www.shuihudhg.cn/207.html
JavaScript 与 Java:二者有何异同?
https://www.shuihudhg.cn/6764.html
判断 Java 字符串中是否包含特定子字符串
https://www.shuihudhg.cn/3551.html
Java 字符串的切割:分而治之
https://www.shuihudhg.cn/6220.html
Java 输入代码:全面指南
https://www.shuihudhg.cn/1064.html