冒泡排序

目的:把一系列数据按照一定顺序排列显示

核心思路:重复走访要排序的数,一次比较两个元素,如果它们顺序错误就把它们顺序交换过来

举例

比如把[5,4,3,2,1]这个序列从小到大排序

第一轮

5和4比较,5>4,交换位置;5和3比较,5>3,交换位置;5和2比较,5>2,交换位置;5和1比较,5>1,交换位置,一共比较了(数组长度-1 = 4)次,全部结束得到第一轮结果

结果:4,3,2,1,5

第二轮

4和3比较,4>3,交换位置;4和2比较,4>2,交换位置;4和1比较,4>1,交换位置,一共比较了(数组长度-2 = 3)次,全部结束得到第二轮结果

结果:3,2,1,4,5

第三轮

3和2比较,3>2,交换位置;3和1比较,3>1,交换位置;一共比较了(数组长度-3 = 2)次,全部结束得到第三轮结果

结果:2,1,3,4,5

第四轮

2和1比较,2>1,交换位置;一共比较了(数组长度-4 = 1)次,全部结束得到第四轮结果

结果:1,2,3,4,5

代码实现

//从小到大排序
function sort(arr) {
    //执行轮数 数组长度-1
    for (var i = 0; i < arr.length-1; i++) {
        //执行次数 数组长度 - i
        for (var j = 0; j < arr.length - i; j++) {
            //顺序不对,两数交换
            var temp = 0;
            if (arr[j] > arr[j + 1]) {
                temp = arr[j + 1];
                arr[j + 1] = arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr;
}
console.log(sort([5, 4, 3, 2, 1]));
输出结果:[1,2,3,4,5]