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

假设我们有这么一个数组

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;i<arr.length;i++){ //这里是取出数组里面的单个数字
        for(var j=i;j<arr.length;j++){  //这里是把上面取出的单个数字和其他数字进行比较,所以有这么一个循环
          if(arr[i]>arr[j]){//当发现数字比其他数字要大的时候,下面就开始进行数字交换了,就是上面我们说的数字交换
            tem1=arr[i]
            arr[i]=arr[j]
            arr[j]=tem1
          }
        }
      }
     console.log(arr)   //[1, 2, 3, 11, 33, 44]

原文地址:http://www.cnblogs.com/sk777/p/16809662.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性