冒泡排序Java第一版
大家好,欢迎来到程序视点
!我是你们的新朋友.安戈!
前言
今天我们来分享下最简单的算法排序问题:冒泡排序
以下是Java实现的冒泡排序算法,包含详细注释和优化策略。
冒泡排序基础版本
关键点
- 双重循环结构
- 每轮将最大元素"冒泡"到数组末尾
- 内层循环次数随轮数增加递减
代码实现
/*** 经典冒泡排序(升序排列)* 时间复杂度:O(n²) 最优情况O(n)(通过优化实现)* 空间复杂度:O(1) 原地排序* 稳定性:稳定排序(相等元素不交换)*/public static void bubbleSort(int[] arr) {if (arr == null || arr.length < 2) {return; // 边界条件检查}int n = arr.length;// 外层循环控制排序轮数(n-1轮)for (int i = 0; i < n - 1; i++) {// 内层循环控制每轮比较次数(随着轮数增加,比较次数减少)for (int j = 0; j < n - 1 - i; j++) {// 相邻元素比较交换if (arr[j] > arr[j + 1]) {swap(arr, j, j + 1);}}}}// 交换数组元素private static void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;// 注意:这里可以改为异或交换(但不推荐实际使用)// arr[i] ^= arr[j];// arr[j] ^= arr[i];// arr[i] ^= arr[j];}
上面是最经典的冒泡排序,但这不是最优版本。
比如:如果排序数组中,本来就有一些已经排好序的索引位,再进行数组循环就没有意思了。下一次的优化版本就解决这个问题
今天的分享先到这里了。
最后
【程序视点】助力打工人减负,从来不是说说而已!
如果你觉得这篇教程有帮助,别忘了【点赞+收藏+关注】三连支持!
后续安戈会持续分享更多开发工具和技巧,敬请期待!如果有其他工具需求,欢迎留言讨论~ 🚀