专业医疗建站,影视网站源码建设,手机分销网站公司,浏览小城镇建设的网站什么是冒泡排序算法#xff1f;
冒泡排序是一种简单的排序算法#xff0c;通过多次遍历待排序的数组#xff0c;逐步将最大的#xff08;或最小的#xff09;元素“冒泡”到数组的一端。它以其操作过程类似气泡从水底冒至水面而得名。 冒泡排序的工作原理
比较相邻元素
冒泡排序是一种简单的排序算法通过多次遍历待排序的数组逐步将最大的或最小的元素“冒泡”到数组的一端。它以其操作过程类似气泡从水底冒至水面而得名。 冒泡排序的工作原理
比较相邻元素 从数组的第一个元素开始逐个比较相邻的两个元素。如果前一个元素比后一个元素大升序排序则交换它们的位置。将最大值或最小值移动到数组一端 在每一轮遍历中未排序部分的最大值或最小值会逐步移动到数组的末端。重复以上步骤 每次遍历的范围减小直到整个数组有序。 代码实现
以下是冒泡排序的 Java 实现代码
public class BubbleSort {public static void bubbleSort(int[] arr) {int n arr.length;// 外层循环表示需要进行的轮数for (int i 0; i n - 1; i) {boolean swapped false; // 标志位用于优化// 内层循环比较相邻元素for (int j 0; j n - 1 - i; j) {if (arr[j] arr[j 1]) {// 如果前一个元素比后一个大交换它们int temp arr[j];arr[j] arr[j 1];arr[j 1] temp;swapped true; // 标记发生了交换}}// 如果某一轮没有发生交换说明数组已经有序if (!swapped) {break;}}}public static void main(String[] args) {int[] arr {5, 2, 9, 1, 5, 6};System.out.println(排序前);for (int num : arr) {System.out.print(num );}System.out.println();bubbleSort(arr);System.out.println(排序后);for (int num : arr) {System.out.print(num );}}
}示例运行结果
输入arr {5, 2, 9, 1, 5, 6}
输出 排序前5 2 9 1 5 6 排序后1 2 5 5 6 9 当然基于传统的冒泡排序算法我们还有其一种变种简易代码实现如下
public static void sort(int [] data){for (int j 0;j data.length-1;j){int m j;for (int k j 1;k data.length;k){if (data[k] data[m]){m k;}}int temp data[m];int[m] data[j];data[j] temp;/*end of the loop*/}
}
可以说传统冒泡是像一个大泡泡从底部向上冒一样最终是由末尾的大数向小数排而这种变种呢跟其恰好相反是由开头的小数向大数排。 冒泡排序的时间复杂度 时间复杂度 最好情况数组已排序O(n)O(n)O(n) 优化后。最坏情况数组逆序O(n2)O(n^2)O(n2)。平均情况O(n2)O(n^2)O(n2)。 空间复杂度 O(1)O(1)O(1)仅需常量级的额外空间。 总结
冒泡排序虽然简单但由于其效率较低通常适用于小规模数据集或教学演示中。更高效的排序算法如快速排序或归并排序更适合实际应用场景。