Fork me on GitHub

斐波那契数列,冒泡排序,选择排序,数组去重

斐波那契数列:

斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。

这个数列从第二项开始,每一项都等于前两项之和。

function abc(num){
        if(num<=2){
            return 1;
        }
        return abc(num-1)+abc(num-2);
    }
简单的例子。

它是使用递归实现的。

递归的原理图:

就是先实现递的过程,然后再实现归的过程。

 

冒泡排序:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
var arr=[2,5,1,0,10,20,4];
function abc2(arr){
    for(var i=0;i<arr.length;i++){
        for(var j=0;j<arr.length-1;j++){
            arr=toCon(arr,j)
        }
    }
    return arr;
}
function toCon(arr,index){
    if(arr[index]>arr[index+1]){
        var a=arr[index+1];
        arr[index+1]=arr[index];
        arr[index]=a;
    }
    return arr;
}
// alert(abc2(arr))

选择排序:

选择排序(Selection sort)是一种简单直观的选择排序。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

 

function selectS(arr){
    if(arr.length==1){
        return arr;
    }
    var min=arr[0];
    var index=0;
    for(var i=0;i<arr.length;i++){
        if(min>arr[i]){
            min=arr[i];
            index=i;
        }
    }
    var a=arr.splice(index,1);
    return a.concat(selectS(arr));
}
// alert(selectS(arr));

 

数组去重

 

就是把数组中重复的值去除

var arr2=[0,0,0,1,2,3,4,5,5,12,1,2];
function delC(arr){
    var obj={};
    var newArr=[];
    for(var i=0;i<arr.length;i++){
        if(!obj[arr[i]]){
            obj[arr[i]]=1;
            newArr.push(arr[i]);
        }
    }
    return newArr;
}
// alert(delC(arr2))

 

posted @ 2016-11-27 19:33  小数点就是问题  阅读(691)  评论(0编辑  收藏  举报