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 中的构造方法:创建对象的基石

下一篇:Java中的字符统计