美文网首页
冒泡排序如何优化

冒泡排序如何优化

作者: bestCindy | 来源:发表于2021-06-14 19:24 被阅读0次

数组有序的情况下提前结束

如果在一次循环比较的过程中,没有发生 swap 操作,可以说明该数组是有序的,可以提前跳出循环

for (let i = 0; i < arr.length; i++) {
    let isSorted = true; // 注意这里!
    for (let j = 0; j < arr.length - 1 - i; j++) {
        if (compare(arr[j], arr[j + 1])) {
            exchange(arr, j, j + 1);
            isSorted = false;
        }
    }
    if (isSorted) {//注意这里
        return;
    }
}

数组局部有序的情况下提前结束

function bubbleSortOpt2(array){
    let endPos = array.length - 1; // 记录这一轮循环最后一次发生交换操作的位置

    while(endPos > 0){
        let thisTurnEndPos = endPos; // <== 设置这一轮循环结束的位置

        for(let i = 0; i < thisTurnEndPos; i++){
            if(array[i] > array[i+1]){
                swap(array, i, i+1);

                endPos = i; // <== 设置(更新)最后一次发生了交换操作的位置
            }
        }
        
        // 若这一轮没有发生交换,则证明数组已经有序,直接返回即可
        if(endPos === thisTurnEndPos){ 
            return ;
        }
    }
}

相关文章

  • 冒泡排序的C语言实现

    冒泡排序 优化后的冒泡排序

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • 冒泡排序(ios和前端script)

    ios之冒泡排序 未优化之前 优化之后 前端冒泡排序(与上同理) 方式一: 方式二:

  • 排序算法-swift实现

    1.冒泡排序 时间复杂度:O(n^2) 1.1初级 1.2正宗冒泡排序 1.3冒泡排序优化 问题:排序过程中,如果...

  • 排序算法-2(javascript) 快速排序的实现

    快速排序 快速排序是冒泡排序的优化,与冒泡排序不同的是,使用了分治法,进行优化。会随机选取一个值pivot(基准元...

  • Python之算法LOB三人组

    一、冒泡排序 a、冒泡排序----优化 如果冒泡排序中执行一趟而没有交换,则列表已经是有序状态,可以...

  • 冒泡排序如何优化

    数组有序的情况下提前结束 如果在一次循环比较的过程中,没有发生 swap 操作,可以说明该数组是有序的,可以提前跳...

  • 双线程冒泡排序算法

    双线程冒泡排序算法是对冒泡排序的优化,对冒泡排序加入了另外一个线程。 冒泡排序可以从数组的第0个元素开始排列,同样...

  • 从0开始——排序

    0.排序的复杂度比较 1.冒泡排序 冒泡排序基础版本1 正宗冒泡排序优化版本 2.选择排序 3.插入排序算法 4....

  • 《大话数据结构》笔记二(排序)

    1 冒泡排序(优化)2 选择排序3 直接插入排序4 希尔排序5 堆排序6 归并排序(优化)7 快速排序(优化) 1...

网友评论

      本文标题:冒泡排序如何优化

      本文链接:https://www.haomeiwen.com/subject/fpmoeltx.html