數列求和
function sum(a0,d,n){//a0->首項,d->公差,n->項數
return (a0+(a0+(n-1)*d))*n/2;//(首項+末項)*項數/2
}
function sum(a0,q,n){//a0->首項,q->公比,n->項數
if(q!=1){
return a0*(1-Math.pow(q,n))/(1-q);//首項*(1-公比的n次方)/(1-公比)
}else{
return a0*n;
}
}
有序數組搜索
function indexOf(arr,val){
var i=Math.floor(arr.length/2);
if(arr[i]===val){
return i;
}
if(arr.length==1){
return -1;
}
if(val<arr[i]){
return indexOf(arr.slice(0,i),val);
}else{
var result=indexOf(arr.slice(i+1),val);
return result==-1?result:i+1+result;
}
}
數組去重
Array.from(new Set(arr))//Set是ES6的新特性,是一種無序無重複元素的集合;Array.from也是ES6的新特性,將類數組轉化爲數組
數組排序
function bubbleSort(arr){
var l=arr.length;
var tmp;
var flag;
for(var i=0;i<l;++i){
flag=false;
for(var j=0;j<l-i-1;++j){
//相鄰兩個數比較,大的換到後面
if(arr[j]>arr[j+1]){
tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
flag=true;
}
}
//若是這一輪循環沒有出現交換,說明全部排序已經完成,直接結束全部循環
if(!flag){
break;
}
}
return arr;
}
function insertSort(arr){
var l=arr.length;
for(var i=1;i<l;++i){
var item=arr[i];
for(var j=0;j<i;++j){
if(arr[j]>item){
arr.splice(j,0,item);//將item插入到下標爲j的位置
arr.splice(i+1,1);//將原來的item刪除
break;
}
}
}
return arr;
}
function quickSort(arr){
var l=arr.length;
if(l<=1){
return arr;
}
var base=arr[0];//基準數
var left=[],right=[];
for(var i=1;i<l;i++){
var item=arr[i];
//小於基準數放左邊,不然放右邊
if(item<base){
left.push(item);
}else{
right.push(item);
}
}
return quickSort(left).concat(base,quickSort(right));
}