冒泡排序(Java)

基本思想

  1. 比较前后相邻的二个数据,如果前面数据大于后面的数据,就将这二个数据交换。
  2. 这样对数组的第 0 个数据到 N-1 个数据进行一次遍历后,最大的一个数据就"沉"到数组第N-1 个位置。
  3. 如此循环 (N-1)次,每次循环需要比较的个数 N 都减 1。当 N = 0 时结束。

代码实现

java 复制代码
public static void bubbleSort(int[] arr) {
    for (int times = arr.length - 2; times > 0; times--) {
        for (int pivot = 0; pivot <= times; pivot++) {
            if (arr[pivot] > arr[pivot + 1]) {
                int temp = arr[pivot];
                arr[pivot] = arr[pivot + 1];
                arr[pivot + 1] = temp;
            }
        }
    }
}

算法复杂度

假设排序的元素个数为 n,则需要循环 n-1 次,每次比较次数都减1也就是说一次循环中最多比较n-1次 最少比较1次。所以 T(n) = n(n+1)/2O(n) = n²

相关推荐
亦暖筑序9 分钟前
AgentScope-Java 入门:用 Middleware 审计 Agent 调用
java·ai编程·agentscope
你驴我19 分钟前
WhatsApp 消息撤回与编辑的幂等性设计实践
java·服务器·前端·后端·python
青山木1 小时前
Hot 100 ---腐烂的橘子
java·数据结构·后端·算法·leetcode·广度优先
未来之窗软件服务1 小时前
计算机考试-快速排序—东方仙盟
数据结构·算法·排序算法·仙盟创梦ide·东方仙盟
小龙报1 小时前
【优选算法】1. 水果成蓝 2.找到字符串中所有字母的异位词
java·c语言·数据结构·数据库·c++·redis·算法
wWYy.1 小时前
数据结构:跳表
数据结构
自强的小白2 小时前
重点!起始时间和结束时间与创建时间和修改时间的区别(localdate与LocaldateTIME区别)以及增删改查什么时候设置目前时间(添加和更新员工时)
java
雪的季节2 小时前
Python 线程同步与异步编程 全解析
java·开发语言
吃饱了得干活2 小时前
缓存与数据库一致性:从理论到实战
java·后端·面试
txzrxz2 小时前
数论:排列数、组合数、费马小定理、逆元、同余定理
c++·算法·数论·组合数·费马小定理·逆元·排列数