算法一:冒泡排序

不羁的心 提交于 2019-12-01 16:24:02

冒泡的原理

先来看一张图片

所谓冒泡排序就是:

假设有一列数组,判断其中每个相邻元素的大小,一但发现第一个数比第二的数要大[默认从小到大排序],就交换两个元素的位置,一直把,数组中最大的元素放置在数组的最后面

    // 假设的数组
    var list = [5,2,1,7,5,3,9,2,7];
    
    // 当元素一直比较到最后,发现自己已经是最后一个数了,后面已经没有元素和自己进行比较了,所以我 只需要比较 length-1 个即可
    for(var i = 0; i<list.length-1; i++){
        // 判断第一个元素是否比第二的元素大,如果大,则交换两个元素的位置
        if(list[i] > list[i+1]){
            // 声明一个临时变量,储存数组的第一个值
            var tmp = list[i];
            list[i] = list[i+1];
            list[i+1] = tmp;

        }
    }

// 这段代码运行后,数组是这个样子的

// [2,1,5,5,3,7,2,7,9]
  • 通过上面我们发现经过一轮循环后,数组中最大的元素,已经排序到最后面了
  • 现在我们只需要,让上面的代码执行 多次既可以
  • 所以我们这样做~~
for(var j = 0; j<list.lenth-1; j++){
    // 每次比较完成后,数组的最后一个就不需要比较了
    for(var i = 0; i<list.length-j-1; i++){
        // 判断第一个元素是否比第二的元素大,如果大,则交换两个元素的位置
        if(list[i] > list[i+1]){
            // 声明一个临时变量,储存数组的第一个值
            var tmp = list[i];
            list[i] = list[i+1];
            list[i+1] = tmp;

        }
    }
}


// 这段代码运行后,数组是这个样子了

// [1,2,2,3,5,5,7,7,9]
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!