You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

该特殊冒泡排序Java实现的时间复杂度大O表示是什么?

结论

该算法的最坏、平均时间复杂度均为 O(n²),只有最优场景(待排序的下标序列已经完全升序)下时间复杂度为O(n)。通常大O表示默认指最坏时间复杂度,因此答案是O(n²)而非O(n)。

逻辑分析

  • 这是冒泡排序的特殊变种:仅处理下标从begin开始、步长为2的元素序列(要么全是偶数下标元素,要么全是奇数下标元素),每次仅交换同组内下标差为2的相邻元素。
  • 最坏场景下(比如待排序的同组元素完全逆序):每轮外层while循环最多只能把当前最大的元素往后移动2个位置,假设同组总共有k个元素(k≈n/2),总共需要k轮外层循环才能把所有元素放到正确位置,外层循环次数为O(n)。
  • 每轮内层for循环都会遍历所有同组元素,遍历次数为O(n)。
  • 两者相乘得到总时间复杂度为O(n) * O(n) = O(n²)。

对应Java代码

public static int Sort(int[] b, int begin) {
    boolean swapped = false;
    int count1 = 0;
    int temporary;
    while (swapped == false) {
        swapped = true;
        for (int i = begin; i < b.length - 1; i+=2) {
            if (b[i] > b[i + 2]) {
                temporary = b[i];
                b[i] = b[i + 2];
                b[i + 2] = temporary;
                swapped = false;
                count1++;
            }
        }
    }
    return count1;
}

内容的提问来源于stack exchange,提问作者Shamim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 13:45:01