美文网首页
js 常用算法

js 常用算法

作者: 进击的蒸汽机 | 来源:发表于2018-02-28 17:38 被阅读0次
var arr = [1, 2];

var _arr = [].slice.call(arr, 0);

// 实现一个bind函数
Function.prototype.bind = function(ctx) {
    var _this = this;
    var arg = [].slice.call(arguments, 1);
    var fBind = function() {
        return _this.apply(ctx, arg.concat([].slice.call(arguments)))
    }

    return fBind;
}

// 快速排序
var quickSort = function(arr) {
    if (arr.length <= 1) return arr;
    var pivotIndex = Math.floor(arr.length / 2);    
    var pivot = arr.splice(pivotIndex, 1)[0];
    var left = [];
    var right = [];
    
    for(var i = 0; i < arr.length; i++) {
        if(arr[i] < pivot) {
            left.push(arr[i]);
        } else {
            right.push(arr[i]);
        }
    }

    return quickSort(left).concat([pivot], quickSort(right));

}

// 冒泡排序
var bubbleSort = function(arr) {
    for(var i = 0; i < arr.length; i++) {
        for(var j = i + 1; j < arr.length; j++) {
            if(arr[i] > arr[j]) {
                var temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }

    return arr;
}

// 利用对象原理去重
var distinct = function(arr) {
    var obj = {}, result = [];
    for(var i = 0; i < arr.length; i++) {
        if(!obj[arr[i]]) {
            obj[arr[i]] = 1;
            result.push(arr[i]);
        }
    }
    return result;
}

// 普通去重
var distinct1 = function(arr) {
    var result = [];
    for(var i = 0; i < arr.length; i++) {
        for(var j = i + 1; j < arr.length; j++) {
            if(arr[i] === arr[j]) {
                j = ++i
            }
        }
        result.push(arr[i]);    
    }
    return result;
}

// indexOf去重
var distinct2 = function(arr) {
    var result = [];
    arr.forEach(function(v, i) {
        var bool = arr.indexOf(v, i + 1);
        if(bool === -1) {
            result.push(v);
        }
    })
    return result;
}



相关文章

  • js常用算法

    数组去重: 阶乘 生成菲波那切数列 二分查找 实现栈的功能 定义一个栈 实现栈的pop,push 实现链表的fin...

  • js 常用算法

  • js常用算法

    虽说我们很多时候前端很少有机会接触到算法,但对算法的理解和掌握是一个优秀工程师的评价标准之一,而且当我们面对较为复...

  • js常用算法

    算法基础知识 一 :排序 二 :去重 三:查找某项在数组中的索引值(二分查找) 四 :广度与深度优先遍历 操作树型...

  • js常用算法

    对数 如果a^x=N(a>0,且a≠1),则x叫做以a为底N的对数,记做x=log(a)(N),其中a要写于log...

  • JS常用算法

    排序算法 一、冒泡排序 冒泡排序比较任意两个相邻的项,如果第一个比第二个大,则交换他们 二、选择排序 选择排序是找...

  • js常用的排序算法

    1.冒泡排序: 最简单的排序算法,代码实现:function bubbleSort(arr) {var len ...

  • 算法与数据结构

    五大常用算法之一:分治算法 五大常用算法之二:动态规划算法 五大常用算法之三:贪心算法 五大常用算法之四:回溯法 ...

  • SHA MD5 Hmac算法是不可逆的, 只有加密, 不能解密

    常用的加密算法:SHA、MD5、Hmac 常用的加密/解密算法: AES、DES 常用的编码解码算法: UrlDe...

  • js中几种常用排序算法

    给出一个数组var bb = [1,2,4,3,56,12,34,0];用几种常用方法对其升序排序: 1.sort...

网友评论

      本文标题:js 常用算法

      本文链接:https://www.haomeiwen.com/subject/dimqextx.html