Java中的基础排序算法。
发布时间:2023-06-26 02:54:05
Java中常见的基础排序算法包括冒泡排序、选择排序、插入排序和快速排序。各算法的具体实现方法如下:
1.冒泡排序:冒泡排序的原理是从数组的第一个元素开始,每次比较相邻两个元素的大小,如果前一个元素大于后一个元素,就交换它们的位置。这样一趟排序后,数组中最后一个元素一定是当前最大的数。然后再从数组的第一个元素开始,重复以上操作,直到数组中所有元素都排好序。
代码如下:
public static void bubbleSort(int[] array) {
int temp;
for (int i = 0; i < array.length - 1; i++) {
for (int j = 0; j < array.length - 1 - i; j++) {
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
2.选择排序:选择排序的原理是在未排序的部分中找到最小的元素,将其放置在已排序的部分的末尾。然后再从未排序的部分中选出最小的元素,直到所有元素都排序完毕。
代码如下:
public static void selectionSort(int[] array) {
int minIndex, temp;
for (int i = 0; i < array.length - 1; i++) {
minIndex = i;
for (int j = i + 1; j < array.length; j++) {
if (array[j] < array[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
temp = array[i];
array[i] = array[minIndex];
array[minIndex] = temp;
}
}
}
3.插入排序:插入排序的原理是将未排序的元素逐个插入到已排序的元素中,保证插入前数组已经有序。从数组的第二个元素开始,将其与已排序的元素进行比较,找到合适的位置插入。
代码如下:
public static void insertionSort(int[] array) {
int temp, j;
for (int i = 1; i < array.length; i++) {
temp = array[i];
j = i;
while (j > 0 && array[j - 1] > temp) {
array[j] = array[j - 1];
j--;
}
array[j] = temp;
}
}
4.快速排序:快速排序的原理是选定一个基准元素,将比它小的元素全部放到左边,比它大的元素全部放到右边。这样一次划分后,基准元素就排好序了。然后再分别将左右两部分进行递归调用快速排序,直到排序完毕。
代码如下:
public static void quickSort(int[] array, int left, int right) {
int i = left, j = right, pivot = array[(left + right) / 2], temp;
while (i <= j) {
while (array[i] < pivot) {
i++;
}
while (array[j] > pivot) {
j--;
}
if (i <= j) {
temp = array[i];
array[i] = array[j];
array[j] = temp;
i++;
j--;
}
}
if (left < j) {
quickSort(array, left, j);
}
if (right > i) {
quickSort(array, i, right);
}
}
总的来说,以上四种基础排序算法都是通过多次比较与交换来将数组排好序的。其中冒泡排序和插入排序的时间复杂度均为$O(n^2)$,相对较慢,适用于数据规模较小的情况;选择排序和快速排序的时间复杂度均为$O(n\log n)$,速度较快,适用于处理大规模数据。 在实际应用中,我们可以根据具体情况选择不同的排序算法来解决问题。
