免费高清网站推荐,做企业培训的网站,wordpress academia,买服务器网站核心思想
冒泡排序是通过相邻元素的连续比较和交换#xff0c;使得较大的元素逐渐浮到数组的末尾#xff0c;如同水中气泡上浮的过程
特点#xff1a;
每轮遍历将最大的未排序元素移动到正确位置稳定排序#xff1a;相等元素的相对位置保持不变原地排序…核心思想
冒泡排序是通过相邻元素的连续比较和交换使得较大的元素逐渐浮到数组的末尾如同水中气泡上浮的过程
特点
每轮遍历将最大的未排序元素移动到正确位置稳定排序相等元素的相对位置保持不变原地排序不需要额外存储空间
复杂度
情况时间复杂度空间复杂度最好情况O(n)O(1)最坏情况O(n²)O(1)平均情况O(n²)O(1)
优缺点
优点
实现简单代码易读不需要额外内存空间对部分有序数组效率较高通过优化
缺点
时间复杂度较高不适合大数据量元素需要频繁交换效率低于其他O(n²)算法如选择排序
适用场景
小规模数据排序n ≤ 1000数据基本有序的情况日常基本很少使用
代码实现Java
public class BubbleSortDemo {public static void bubbleSort(int[] arr) {int n arr.length;//外层循环控制排序轮数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[] data {5, 3, 8, 4, 2};System.out.println(排序前: Arrays.toString(data));bubbleSort(data);System.out.println(排序后: Arrays.toString(data));}
}过程示例
初始 5 3 8 4 2
第1轮3 5 4 2 [8]
第2轮3 4 2 [5 8]
第3轮3 2 [4 5 8]
第4轮2 [3 4 5 8]