📅  最后修改于: 2023-12-03 14:54:42.256000             🧑  作者: Mango
排序是程序中常见的操作,它将一组数据按照某种规则进行排列,使得数据更加有序且易于访问。Java提供了多种排序算法,以下会简要介绍几种其中较为常见的排序算法。
冒泡排序是一种基础的排序算法,其思想是每次比较相邻的两个元素,将较大的不断向后交换,经过一轮比较后最大的元素就会被移动到最后面。不断重复这个过程,直到所有元素都有序排列。以下是该算法的Java代码:
public static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
插入排序是一个稳定的排序算法,其思想是将一组数据分成已排序和未排序两部分,每次将未排序的第一个元素插入到已排序的合适位置。以下是该算法的Java代码:
public static void insertionSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
}
快速排序是一种高效的排序算法,其思想是选取一个关键元素,将数组划分为小于该元素和大于该元素的两个部分,然后再对这两个部分分别进行快速排序,最后将结果合并起来。以下是该算法的Java代码:
public static void quickSort(int[] arr, int low, int high) {
if (low < high) {
int partitionIndex = partition(arr, low, high);
quickSort(arr, low, partitionIndex - 1);
quickSort(arr, partitionIndex + 1, high);
}
}
public static int partition(int[] arr, int low, int high) {
int pivot = arr[low];
while (low < high) {
while (low < high && arr[high] >= pivot) {
high--;
}
arr[low] = arr[high];
while (low < high && arr[low] <= pivot) {
low++;
}
arr[high] = arr[low];
}
arr[low] = pivot;
return low;
}
归并排序是一种利用分治思想的高效排序算法,其思想是将一组数据分成两个大致相等的部分,分别对其进行排序,然后再将两个有序的部分合并起来。以下是该算法的Java代码:
public static void mergeSort(int[] arr, int left, int right) {
if (left < right) {
int middle = (left + right) / 2;
mergeSort(arr, left, middle);
mergeSort(arr, middle + 1, right);
merge(arr, left, middle, right);
}
}
public static void merge(int[] arr, int left, int middle, int right) {
int[] temp = new int[right - left + 1];
int i = left;
int j = middle + 1;
int k = 0;
while (i <= middle && j <= right) {
if (arr[i] <= arr[j]) {
temp[k++] = arr[i++];
} else {
temp[k++] = arr[j++];
}
}
while (i <= middle) {
temp[k++] = arr[i++];
}
while (j <= right) {
temp[k++] = arr[j++];
}
for (int l = 0; l < k; l++) {
arr[left + l] = temp[l];
}
}
以上是四种常见的排序算法的Java代码,程序员可根据自己的需求选择不同的排序算法进行实现。