冒泡排序(Bubble Sort)是一种简单的排序算法,它通过多次迭代比较和交换相邻的元素来排序一个数组。每次迭代,较大的元素会逐渐"冒泡"到数组的末尾。以下是Java中实现冒泡排序的示例代码:
public class BubbleSort { public static void bubbleSort(int[] arr) { int n = arr.length;
// 进行n-1次迭代,每次迭代将一个最大的元素移到末尾 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; } } } } public static void main(String[] args) { int[] arr = {64, 34, 25, 12, 22, 11, 90}; System.out.println("排序前的数组:"); for (int num : arr) { System.out.print(num + " "); } bubbleSort(arr); System.out.println("\n排序后的数组:"); for (int num : arr) { System.out.print(num + " "); } } } |
在上述代码中,bubbleSort方法实现了冒泡排序算法。它通过嵌套的循环进行迭代,每次迭代比较相邻的元素并根据需要交换它们的位置。在每次迭代中,最大的元素会逐渐"冒泡"到数组的末尾。main方法中的示例展示了如何使用该算法对一个数组进行排序。
运行代码,你将看到排序前和排序后的数组输出。注意,冒泡排序算法的时间复杂度为O(n^2),因此它在大规模数据集上的性能可能不如其他高效的排序算法。
插入排序(Insertion Sort)是一种简单的排序算法,它通过将一个元素逐个插入已排序的序列中,最终完成整个数组的排序。具体来说,插入排序从第二个元素开始,逐个将其插入到已排序的子数组中,直到所有元素都被插入到适当的位置为止。以下是Java中实现插入排序的示例代码:
public class InsertionSort { public static void insertionSort(int[] arr) { int n = arr.length;
for (int i = 1; i < n; i++) { int key = arr[i]; int j = i - 1;
// 将arr[0...i-1]中的元素依次向后移动,直到找到key的正确位置 while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; }
arr[j + 1] = key; } } public static void main(String[] args) { int[] arr = {64, 34, 25, 12, 22, 11, 90}; System.out.println("排序前的数组:"); for (int num : arr) { System.out.print(num + " "); } insertionSort(arr); System.out.println("\n排序后的数组:"); for (int num : arr) { System.out.print(num + " "); } } } |
在上述代码中,insertionSort方法实现了插入排序算法。它从数组的第二个元素开始,将当前元素保存为key,然后将比key大的元素向后移动一个位置,直到找到key的正确位置。main方法中的示例展示了如何使用该算法对一个数组进行排序。
运行代码,你将看到排序前和排序后的数组输出。插入排序算法的时间复杂度为O(n^2),但在部分已排序或接近排序的情况下,它的性能较好。插入排序还具有原地排序的特点,不需要额外的内存空间。
选择排序(Selection Sort)是一种简单的排序算法,它通过每次选择未排序部分中的最小元素,并将其放置在已排序部分的末尾,逐步完成整个数组的排序。具体来说,选择排序从第一个元素开始,逐个找到未排序部分的最小元素,并与未排序部分的第一个元素交换位置。以下是Java中实现选择排序的示例代码:
public class SelectionSort { public static void selectionSort(int[] arr) { int n = arr.length;
for (int i = 0; i < n - 1; i++) { int minIndex = i;
// 在未排序部分中找到最小的元素的索引 for (int j = i + 1; j < n; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } }
// 将最小元素与未排序部分的第一个元素交换位置 int temp = arr[minIndex]; arr[minIndex] = arr[i]; arr[i] = temp; } } public static void main(String[] args) { int[] arr = {64, 34, 25, 12, 22, 11, 90}; System.out.println("排序前的数组:"); for (int num : arr) { System.out.print(num + " "); } selectionSort(arr); System.out.println("\n排序后的数组:"); for (int num : arr) { System.out.print(num + " "); } } } |
在上述代码中,selectionSort方法实现了选择排序算法。它通过嵌套的循环迭代,每次迭代找到未排序部分的最小元素,并与未排序部分的第一个元素交换位置。main方法中的示例展示了如何使用该算法对一个数组进行排序。