JS数据结构与算法(一)

来源:互联网 发布:excel表格数据分列 编辑:程序博客网 时间:2024/06/06 19:49

JS数据结构与算法(一)

一些常用的算法,未完待续

/** * 数组元素去重 * @return {Array} 去重后的数组 * arr.deRepeat(); */Array.prototype.deRepeat = function () {    var newArr = [],        josn = {},        i,        len;    for (i = 0, len = this.length; i < len; i++) {        if (!josn[this[i]]) {            newArr.push(this[i]);            josn[this[i]] = 1;                           //存在添加标记        }    }       return newArr;};/** * 递归实现二分查找排好序的数组 * @param  {Number} l    [要查找数组的左侧位置] * @param  {Number} r    [要查找数组的右侧位置]    * @param  {} targ [查找的目标值] * @return {boolean}      [返回是否查找成功] */Array.prototype.binarySearch = function (l, r, targ) {    var len = r - l + 1,        mid;    if (l === r) {        return this[l] === targ ? true : false;    } else if (l > r) {        return false;    }    mid = l + Math.floor(len / 2) - 1;    if (targ === this[mid]) {        return true;    } else {        if (targ > this[mid]) {            return arr.binarySearch(mid + 1, r, targ);        } else {            return arr.binarySearch(l, mid - 1, targ);        }    }    return false;};/** * 非递归实现二分查找排好序的数组 * @param  {Number} l    [要查找数组的左侧位置] * @param  {Number} r    [要查找数组的右侧位置]    * @param  {} targ [查找的目标值] * @return {Number}      [查找成功返回下标值,否则返回-1] */Array.prototype.binarySearch2 = function (l, r, targ) {    var mid = (l + r) >> 1;    while (this[mid] !== targ && l <= r) {        if (this[mid] < targ) {            l = mid + 1;        } else if (this[mid] > targ) {            r = mid - 1;        }        mid = (l + r) >> 1;    }    return this[mid] === targ ? mid : -1;};// var arr = [1, 3, 5, 7, 9];// console.log(arr.binarySearch2(0, 4, 9));/** * 随机获取颜色的十六进制值 * @return {string} [颜色的十六进制值] */function randomColor() {    var resStr = '#',        cnt = 6,        eachPos,        hashArr = '0123456789ABDEF';    while (cnt--) {        eachPos = Math.floor(Math.random() * 15);        resStr += hashArr[eachPos];    }    return resStr;}// console.log(randomColor());
0 0
原创粉丝点击