Java 数组排序指南241
在 Java 中,数组是存储同类型元素的集合。为了组织和检索数组元素,经常需要对数组进行排序。Java 提供了多种方法来对数组进行排序,本文将介绍最常用和最有效的排序算法的原理和实现。
冒泡排序
冒泡排序是一个简单且通用的排序算法。它通过重复遍历数组,将相邻元素进行比较和交换,逐步将最大元素移动到数组末尾。这种过程一直持续到数组完全排序。
public static void bubbleSort(int[] arr) {
boolean swapped;
do {
swapped = false;
for (int i = 0; i < - 1; i++) {
if (arr[i] > arr[i + 1]) {
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
swapped = true;
}
}
} while (swapped);
}
选择排序
选择排序是一种基于交换的排序算法,类似于冒泡排序。但是,选择排序在每次遍历中找到数组中剩余元素的最小值,然后将其与当前位置进行交换。这种过程一直持续到数组完全排序。
public static void selectionSort(int[] arr) {
for (int i = 0; i < - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < ; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
插入排序
插入排序是一个高效的排序算法,适用于已经部分排序或几乎排序的数组。它通过将元素逐个插入到前面已排序的部分,从而形成一个更大的排序部分。这种过程一直持续到数组完全排序。
public static void insertionSort(int[] arr) {
for (int i = 1; i < ; i++) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && key < arr[j]) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
}
归并排序
归并排序是一种分治算法,通过将数组分解成较小的部分,对它们进行递归排序,然后将排序后的部分合并成一个有序数组。这种方法具有 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 l1 = low;
int l2 = mid + 1;
int k = 0;
while (l1
2024-10-24
下一篇:Java中的字符统计
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