前端經典算法大集合


//遞歸算法
function factorial(num){
      if (num <= 1){
        return 1;
      } else {
        return num * arguments.callee(num-1);
      }
    }
// arguments.callee指向當前運行函數指針
 
//二分查找
function binarySearch(arr, data) {
        var end = arr.length - 1,
            start = 0;

        while (start <= end) {
            var middle = Math.floor((start + end) / 2);
            if (arr[middle] > data) {
                end = middle - 1;
            } else if (arr[middle] < data) {
                start = middle + 1;
            } else {
                return middle;
            }
        }
        return -1;
    }
var arr = [1, 2, 3, 4, 5, 6];
console.log(binarySearch(arr, 2));
 
//冒泡排序算法
function mySort(arr){
        for(var i=0;i<arr.length;i++){
            for(var j=0;j<arr.length-i-1;j++){
                if(arr[j]>arr[j+1]){
                    var temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        return arr;
    }
var arr = [1, 2, 8, 3, 4, 1];
console.log(mySort(arr));
 
//數組去重 也可以使用ES6  Set集合,然后Array.from()轉數組
function unique1(arr) {
    var newArr = [];
    for (var i = 0; i < arr.length; i++) {
        if (newArr.indexOf(arr[i]) == -1) {
            newArr.push(arr[i]);
        }
    }
    return newArr;
}

var arr1 = ['b', 'b', 'a', 1, 3, 4, 4];
console.log(unique1(arr1));

function unique2(arr) {
    var hash = {},
        newArr = [];
    for (var i = 0; i < arr.length; i++) {
        if (!hash[arr[i]]) {
            hash[arr[i]] = true;
            newArr.push(arr[i]);
        }
    }
    return newArr;
}

var arr2 = ['b', 'b', 'a', 1, 3, 4, 4];
console.log(unique2(arr2));

function unique3(arr) {
    for (var i = 0; i < arr.length; i++) {
        for (var j = 0; j < arr.length; j++) {
            if (arr[i] === arr[j] && i != j) {
                arr.splice(i, 1);
            }
        }
    }
    return arr;
}

var arr3 = ['b', 'b', 'a', 1, 3, 4, 4];
console.log(unique3(arr3));
 
//統計出現最多字符數
function getMax(str) {
    var hash = {},
        maxstr, max = 1;
    for (var i = 0; i < str.length; i++) {
        if (!hash[str[i]]) {
            hash[str[i]] = 1;
        } else {
            hash[str[i]]++;
        }
        if (hash[str[i]] > max) {
            max = hash[str[i]];
            maxstr = str[i];
        }
    }
    return maxstr;
}

var str = 'abcdeffggghhhhiiiii';
console.log(getMax(str));
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM