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);