常見算法整理

常見js算法

1.比較兩個數組

Array.prototype.diff = function(a) {
    return this.filter(function(i) {return a.indexOf(i) < 0;});
};

////////////////////  
// Examples  
////////////////////

[1,2,3,4,5,6].diff( [3,4,5] );  
// => [1, 2, 6]

["test1", "test2","test3","test4","test5","test6"].diff(["test1","test2","test3","test4"]);  
// => ["test5", "test6"]

2.數組去重

var arr = ['a', 'b', 'c', '1', 0, 'c', 1, '', 2,1, 0];
/*    function unique(){
        var ret = [];
        for(var i =0; i<arr.length;i++){
            var item = arr[i];
            if(ret.indexOf(item) === -1){   // IE6-IE8如下沒有indexof()方法。
                ret.push(item);
            }
        }
        return ret;
    }*/

    function unique(){
        var ret = [];
        var hash = {};
        for (var i = 0; i < arr.length; i++) {
            var item = arr[i];
            var key =typeof(item)+item;
            if(hash[key] != 1){
                ret.push(item);
                hash[key] = 1;
            }
        };
        return ret
    }

3.數組從小到大排序

var arr = [1,0,10,3,5,6,2];
    arr.sort(function(a,b){
        return a - b;  //從小到大排序
    })

4. 10秒倒計時定時器

var seconds = 10;
    var timeAlarm = setInterval(showTime,1000);
    function showTime(){
        seconds -= 1;
        console.log(seconds);
        if (seconds == 0) {
            clearInterval(timeAlarm);
        };
    };

5.快速排序

快排的思想:  算法

  1. 在數據集之中,選擇一個元素做爲"基準"(pivot)。數組

  2. 全部小於"基準"的元素,都移到"基準"的左邊;全部大於"基準"的元素,都移到"基準"的右邊。dom

  3. 對"基準"左邊和右邊的兩個子集,不斷重複第一步和第二步,直到全部子集只剩下一個元素爲止。
    快排最壞時間O(n2),最好時間O(nlgn)ui

function quickSort(arr){
        if(arr.length <= 1){ return arr;}
        var pivotIndex = Math.floor(arr.length / 2);
        var pivot = arr.splice(pivotIndex,1)[0];
        var left = [] ,right =[];
        for(var i = 0;i<arr.length;i++){
            if(arr[i] > pivot){
                right.push(arr[i]);
            }else{
                left.push(arr[i]);
            }
        };
        return quickSort(left).concat([pivot],quickSort(right));
    };
    var data =[85,24,63,45,17,31,96,50];
    console.log( quickSort(data) );

6.隨機選取從10-100的10個數字。

var iArray =[];
        function getRandom(iStart,iEnd){
            var iChoice = iStart-iEnd+1;
            return Math.abs(Math.floor(Math.random()*iChoice))+iStart;
        }
        for(var i=0;i<10;i++){
            iArray.push(getRandom(0,10))
        };

7.去掉字符串中全部空格(包括中間空格,須要設置第2個參數爲:g)

function Trim(str,is_global)
        {
            var result;
            result = str.replace(/(^\s+)|(\s+$)/g,"");
            if(is_global.toLowerCase()=="g")
            {
                result = result.replace(/\s/g,"");
             }
            return result;
}
相關文章
相關標籤/搜索