算法学习(一)冒泡排序
一、引言
算法知识是计算机和软件工程的基础,虽然日常开发中很少会让我们自己写算法,但是对于不是科班出身的我来说,技术就是我的精神食粮,所以这一分类开始记录学习算法的过程~~~
二、冒泡算法
冒泡工具类
/** * 冒泡排序算法工具类 */ public class MaoPaoUtil { /** * 冒泡排序【对外暴露静态方法】 */ public static void bubbleSort(int[] arr) { System.out.println("========排序前的数组,元素为:" + showItem(arr) + "========"); //1、对数据循环,取出数据比较 for (int i = 0; i < arr.length - 1; i++) { //2、设定排序完成标记,若为true,则表示此次循环没有进行交换,即待排序数组已经有序,排序完成。 boolean flag = true; //3、再次对数据循环,取出数据比较 for (int j = 0; j < arr.length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { //4、从新定义一个变量temp,作为交换变量用 int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; flag = false; } } //5、若排序完成,结束循环 if (flag) { break; } else { System.out.println("第【" + (i + 1) + "】次排序后的数组,元素为:" + showItem(arr) + "========"); } } } /** * 返回数组字符串 */ public static String showItem(int[] arr) { String itemStr = ""; if (null != arr) { itemStr = "【 "; for (int item : arr) { itemStr = itemStr + " " + item; } itemStr += " 】"; } return itemStr; } }
测试类
/** * 冒泡工具测试类 */ public class MaoPaoTest { public static void main(String[] args) { //1、设置乱序数组 int[] arr = {1, 8, 3, 6, 9, 4, 5}; //2、调用冒泡排序工具类 MaoPaoUtil.bubbleSort(arr); } }
解析
基本思想:相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序。
时间复杂度:O(n²)
图解:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律