资讯专栏INFORMATION COLUMN

JS冒泡排序(prototype详解)

LMou / 518人阅读

摘要:代码讲解创建一个数组方便实验。给类增加方法把指向存储起来当前指向也就是调用方法的数组实例遍历实例里的每个元素为什么因为第一遍循环的时候最大的数字已经被换到最后一位去了,所以可以少做一次循环这边循环和上面是同样的道理,但是呢。

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码,有兴趣的朋友可以去了解下.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/82395.html

相关文章

  • 【连载】前端个人文章整理-从基础到入门

    摘要:个人前端文章整理从最开始萌生写文章的想法,到着手开始写,再到现在已经一年的时间了,由于工作比较忙,更新缓慢,后面还是会继更新,现将已经写好的文章整理一个目录,方便更多的小伙伴去学习。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 个人前端文章整理 从最开始萌生写文章的想法,到着手...

    madthumb 评论0 收藏0
  • Array.prototype.sort()方法到底是如何排序的?

    摘要:本文除了会带大家了解一些方法后面简写为方法的基本定义和用法之外,还会探讨一下方法到底是使用的什么排序算法。下面我们来看看方法到底是如何排序的。   本文除了会带大家了解一些Array.prototypr.sort()方法(后面简写为sort()方法)的基本定义和用法之外,还会探讨一下sort()方法到底是使用的什么排序算法。简单度娘了一下,网上的那些sort()方法详解文章,大多只说了...

    youkede 评论0 收藏0
  • 冒泡排序及优化详解

    摘要:算法思想冒泡排序属于一种典型的交换排序。冒泡排序常规版代码实现下面详细分析一下常规版的冒泡排序,整个算法流程其实就是上面实例所分析的过程。 算法思想   冒泡排序属于一种典型的交换排序。   交换排序顾名思义就是通过元素的两两比较,判断是否符合要求,如过不符合就交换位置来达到排序的目的。冒泡排序名字的由来就是因为在交换过程中,类似水冒泡,小(大)的元素经过不断的交换由水底慢慢的浮到水的...

    evin2016 评论0 收藏0
  • JS数据结构与算法_排序和搜索算法

    摘要:上一篇数据结构与算法树写在前面这是学习数据结构与算法的最后一篇博客,也是在面试中常常会被问到的一部分内容排序和搜索。 上一篇:JS数据结构与算法_树 写在前面 这是《学习JavaScript数据结构与算法》的最后一篇博客,也是在面试中常常会被问到的一部分内容:排序和搜索。在这篇博客之前,我每每看到排序头就是大的,心里想着类似冒泡排序,两层遍历啪啪啪就完事了,然后再也无心去深入研究排序相...

    姘搁『 评论0 收藏0

发表评论

0条评论

LMou

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<