• js 数组排序


    javascript提供一些内置的方法进行排序,例如:sort,reverse()方法等

    reverse()方法

     就是用于 颠倒数组中元素的顺序 ,例如:

    var array=new Array(2);
    array[0]="hello";
    array[1]="alice";
    console.log(array);
    console.log(array.reverse());
    //输出的结果分别为:["hello", "alice"] ,["alice", "hello"]

    sort()语法:

    arrayObject.sort(sortby);//sortby可选 ,用来规定排序顺序,必须是函数 

    但是调用此方法的时候 ,有时得到意料之外的结果 ,例如: 

      var array1 = [0,1,5,10,15];
     array1.sort();//结果为:0,1,10,15,5

    这是因为 sort()排序的 时候会调用 toString()函数,转换为字符串进行比较 。

    改进方法如下:

    var array1=[0,1,5,10,15];
    array1.sort(function(a,b){
       return a-b
    });
    //输出结果为: [0, 1, 5, 10, 15]

    冒泡排序

    sort(),reverse()方法都是js数组提供的方法 ,可以用冒泡排序来实现排序,例如以下代码:

    function bubSort(array){
       for(var i=0;i<array.length;i++){
          for(var j=i+1;j<array.length;j++){
             if(array[i]>array[j]){
               //交换值
               var b=array[i];
               array[i]=array[j];
               array[j]=b;
            }
         }
       }
       return array;
    }
    var array=[3,5,1,8,2,9]; bubSort(array);

    原型写法如下:

    Array.prototype.bobSort=function(){
         for(var i=0;i<this.length;i++){
          for(var j=i+1;j<this.length;j++){
             if(this[i]>this[j]){
               var b=this[i];
               this[i]=this[j];
               this[j]=b;
            }
         }
       }
       return this;
    }
    var array=[3,5,1,8,2,9];
    array.bobSort();

    递归算法

    例如: 1,2,3,5,8,13,21,34求第30个数是多少(要求使用递归算法)

    首先要看懂这个数字规律,即第三项等于前两项的和,即 1+2=3,2+3=5,3+5=8,5+8=13,8+13=21......

    js代码实现如下:

    function getNumber(n){
        if(n<=3){
          return n;
       }else{
          return getNumber(n-1)+getNumber(n-2);//可以用 return arguments.callee(n-1)+arguments.callee(n-2);来替换,arguments.caller调用自身
        }
    }
    
    var num=getNumber(30)
    console.log(num);
  • 相关阅读:
    shell脚本100例、练习使用
    shell基础编程
    mysql基础理论知识
    Docker 基础
    python基础之类(面向对象编程)
    python基础之函数
    python基础之认知及编码
    python基础之数据类型
    python基础之注意事项
    1.linux使用基础
  • 原文地址:https://www.cnblogs.com/alice626/p/5279764.html
Copyright © 2020-2023  润新知