• js排序的基础原理理解


    在了解数组排序前,我们先了解下如何交换两个数字的位置

    假设我们有这么一个数组

    var arr=[1,2,3]
    

    我们想交换1和3两个的位置我们该如何做呢?
    最简单的肯定是手动赋值,如下

    var arr=[3,2,1]
    

    这样就实现了交换数字的功能,但是这么做显然是不合理的,因为我们是程序化操作,我们肯定需要用程序的思维来解决问题,这时,我们可以引入两个变量把两个数值给存起来,然后实现交换,代码如下:

    var arr=[1,2,3]
    var a1=arr[0]
    var a2=arr[2]
    arr[0]=a2
    arr[2]=a1
    console.log(arr)   //(3) [3, 2, 1]
    

    你看,我们已经简单实现了两个数字的交换,但是我们想想能不能用一个变量实现需求呢,其实是可以的
    例如:

    var arr=[1,2,3]
    var a1= arr[0]   //我们把arr[0]赋值给变量a1,这样a1就等于了arr[0]
    arr[0]=arr[2]    //这时候我们把arr[2]的值给arr[0],这里是个关键,因为上一步我们把arr[0]的值已经给了a1了
    arr[2]=a1   //这时候我们把a1的值(其实也就是arr[0]的值)给到了arr[2],这样就实现了交换数值的操作
    console.log(arr)
    

    有了上面的铺垫,我们再来说下排序

    要求:请把下列数组从小到达进行排序,

     var arr = [44,3,2,1,11,33]
    

    我们先不开始写代码,我们来说下思路,我们默算的话肯定是把第一项拿出来然后和后面的每一个数字进行比较,我们比较完发现44是最大的,我们肯定是把它放到最后,然后拿出第二项和其他的数字进行比较,这样的话其实我们拿出一个数字是一次循环,然后把单个数字和其他所有数字比较又是一次循环,由此我们得出结论,这里需要两次循环才能够进行比较

          var arr = [44,3,2,1,11,33]
          for(var i=0;iarr[j]){//当发现数字比其他数字要大的时候,下面就开始进行数字交换了,就是上面我们说的数字交换
                tem1=arr[i]
                arr[i]=arr[j]
                arr[j]=tem1
              }
            }
          }
         console.log(arr)   //[1, 2, 3, 11, 33, 44]
    

    __EOF__

  • 本文作者: 北城青
  • 本文链接: https://www.cnblogs.com/sk777/p/16809662.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    1023. 驼峰式匹配
    python-opencv使用摄像头实时人脸检测
    三台centos7部署redis6.2版本集群
    Mysql高级——索引优化和查询优化(3)
    libevent学习——辅助类型和函数
    Visual Studio 和 VSCode 哪个好?
    经济不景气时,企业如何通过反向竞价节省成本?
    【新知实验室 认识TRTC+四步跑通音视频demo】
    Day14--商品列表-点击商品item项导航跳转到商品详情页面
    学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计 汉语言文学设计题材网页
  • 原文地址:https://www.cnblogs.com/sk777/p/16809662.html