冒泡排序算法

冒泡排序在面试题中比较常见,今天我们就看哈它的原理及过程。
冒泡排序的实现原理:

假如我们有五个数,分别是,8,2,6,5,1。我们要进行从小到大排序,一般的话我们会用数组中的sort()方法,这里我们用冒泡排序实现它。
为什么叫冒泡排序,因为和水中冒泡的原理是一样的。小的会向上浮,大的会向下沉。
那么在排序中我们该如何运用呢?
假如它们是这样排列的:
8
2
6
5
1
首先我们用第一个数8和剩余的2,6,5,1进行比较,我们发现会比较4次。
第1次,8和2比较,谁大谁沉底,也就是交换值。
比较的结果是:
2
8
6
5
1
第2次,8和6比较,8大向下沉,交换位置
比较的结果:
2
6
8
5
1
第3次,8和5比较,8大继续向下沉,交换位置
比较结果如下:
2
6
5
8
1
第4次,8和1比较,8大沉到最低了
比较结果如下:
2
6
5
1
8
这是第一轮比较,我们第一轮比较并不能实现从小到大的排序。
所以我们还需要三轮比较,游戏规则和上面一样。
原理就是这样的。
我在这里附图片便于需要的人理解。
这里写图片描述
这里写图片描述
这里写图片描述

具体算法如下:

var arr = [44,15,21,11,31];
//console.log(arr.length); //5
function sortArr(arr){
    for( var i = 0;i < arr.length; i++){
    //console.log("i的值为:",i); // 0 1 2 3 4 5
        for(var j = i+1 ;j < arr.length; j++){
            //console.log("j的值为:",j);
            if( arr[i] > arr[j]){
                var temp = 0;
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
    console.log("冒泡完之后的数组:",arr);
}
sortArr(arr);

别人这里有更多的排序方法,有兴趣可以参考下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值