js中数字排序除了sort的方法

除了系统自带的sort()数组排序方法,我们还可以自己编写函数进行数组排序;

比如下题:

var arr=[3,4,5,6,7]

首先我们可以选择冒泡法进行如下比较(以下数字代表索引)

 // 0-1,1-2,2-3,3-4

  // 0-1,1-2,2-3

  // 0-1,1-2

  // 0-1
for(var i=0;i<arr.length;i++){
    //第一个比较了四次  第二个比较了三次
    for(var j=0;j<arr.length-i;j++){
        //判断数字n和n+1的大小
        if(arr[j]>arr[j+1]){
            //判断完成后,数字进行交换
            var temp=arr[j];
            arr[j]=arr[j+1];
            arr[j+1]=temp;
        }
    }
}
console.log(arr)
第二种方法,我们使用选择法;比较思路如下(以下数字代表索引)

  // 0-1,0-2,0-3,0-4  //拿第一个数字和其他数字依次比较,小的放在第一个

  // 1-2,1-3,1-4

  // 2-3,2-4

  // 3-4
 for(var i=0;i<arr.length;i++){
 // 为了能不断的使用第一位和后面的作比较,在能拿到第一个数据的时候,存到一个ls变量中
 // 将来使用这个ls变量作比较,就不影响真正的第一位的数据了,变量index为此时的索引
     var ls=arr[i];  
     var index=i; 
    for(var j=i+1;j<arr.length;j++){
      if(arr[i]>arr[j]){
           ls=arr[j]   //循环进行比较,判断出最小的存放在ls中
           index=j     //此时最小的数字的索引为j
       }
   }
   //比较完成后,交换数组中的数据
   arr[index]=arr[i];  
   arr[i]=ls;
 }
 console.log(arr)
原文地址:https://www.cnblogs.com/lhx5213/p/12805739.html