Java编程:冒泡排序与选择排序实现详解

5星 · 超过95%的资源 需积分: 9 3 下载量 169 浏览量 更新于2024-09-13 收藏 99KB PDF 举报
"Java实现的常见排序算法,包括冒泡排序和选择排序的详细解释及代码示例。" 在编程领域,排序算法是基础且重要的数据处理技术,尤其是在Java这样的编程语言中。本文将深入探讨两种经典的排序算法:冒泡排序和选择排序。 1. 冒泡排序(Bubble Sort) 冒泡排序是一种简单的交换排序算法,其基本思想是通过重复遍历待排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经过交换慢慢“浮”到数列的顶端,就像水中的气泡最终会上浮到水面一样。 在Java中,冒泡排序的实现如下: ```java public class Test { public static void main(String[] args) { int[] a = new int[]{3, 4, 1, 5, 2}; // 冒泡排序 for (int i = 0; i < a.length; i++) { for (int j = i + 1; j < a.length; j++) { if (a[i] > a[j]) { int temp = a[j]; a[j] = a[i]; a[i] = temp; } } } // 检测排序结果 for (int i : a) { System.out.println("i=" + i); } } } ``` 对于降序排列,只需将条件语句`if (a[i] > a[j])`改为`if (a[i] < a[j])`。 2. 选择排序(Selection Sort) 选择排序的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。具体步骤如下: - 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置; - 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾; - 重复第二步,直到所有元素均排序完毕。 Java中的选择排序实现如下: ```java public class Test { public static void selectionSort(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { int minIndex = i; for (int j = i + 1; j < arr.length; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } // 将找到的最小元素与第一个元素交换 int temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } } public static void main(String[] args) { int[] a = new int[]{3, 4, 1, 5, 2}; selectionSort(a); // 输出排序结果 for (int i : a) { System.out.println("i=" + i); } } } ``` 这两种排序算法各有优缺点。冒泡排序在最佳情况(已排序)下时间复杂度为O(n),但在最坏情况下(逆序)为O(n²);选择排序无论何种情况都保持O(n²)的时间复杂度。虽然它们不是效率最高的排序算法,但对于理解和学习排序的基本概念非常有用。在实际开发中,人们通常会使用更高效的排序算法,如快速排序、归并排序或堆排序等。