JS冒泡排序(prototype详解)

本文详细介绍了冒泡排序算法的实现原理及步骤,并通过JavaScript代码实现了数组的升序排列。通过对核心代码的逐行解析,帮助读者理解冒泡排序的工作机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.代码讲解

var arr = [4,21,5,10,3];
//创建一个数组,方便实验。
Array.prototype.sorts = function(){
//给Array类增加sorts方法
    var _this = this;
    //把this指向存储起来,当前this指向Array(也就是调用sorts方法的数组,Array实例)
    for(var i=0;i<_this.length-1;i++){
    //遍历Array(实例)里的每个元素.为什么-1,因为第一遍循环的时候最大的数字已经被换到最后一位去了,所以可以少做一次循环.
        for(var k=0;k<_this.length-i-1;k++){
        //这边循环-1和上面-1是同样的道理,但是-i呢。因为当i=0时,最大一位数已经到最后去了,i=1第二大的数字也到最后第二位去了,所以没有必要再去比较后面已经排完序的数字了.
            if(_this[k] > _this[k+1]){
            //这边是冒泡排序的核心,当左边数字比右边数字大的时候,执行以下代码.
            //这边大于>改为小于的话,排序就会倒过来,你不妨可以试试.
                var temp = _this[k];
                //声明变量temp,把左边的元素赋值给它.假设左边的元素是A,temp就等于A了.
                _this[k] = _this[k+1];
                //右边的元素赋值给左边的元素.假设右边的元素为B,那_this[k]就等于B了.
                _this[k+1] = temp;
                //把temp元素赋值给右边的元素,那右边的元素_this[k+1]就等于A了.
                //最后的效果就是左边的元素_this[k]为B,右边的元素_this[k+1]为A,它们互相换了位置.
            }
        }
    }
    return _this;
    //最后返回这个数组
}
console.log(arr.sorts());
//打印出[3.4.5.10.21];

2.代码运行

i=0时:[4,5,10,3,21],
i=1时:[4,5,3,10,21],
i=2时:[4,3,5,10,21],
i=3时:[3,4,5,10,21].

3.补充

上面的代码举例是数字,其实也可以对字母进行排序,比如["d","a","c"].sorts().打印出来就是["a","c","d"].字母的大小比较是来自于ASCLL码,每一个字母都有自己的一个ASCLL码,有兴趣的朋友可以去了解下.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值