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
- JS数据结构与算法(一)
- 数据结构与算法(一)
- 数据结构与算法(一)
- 数据结构与算法(一)
- 数据结构与算法(一)
- 数据结构与算法(一)
- js数据结构和算法(一)概述
- 算法与数据结构(一)
- 数据结构与算法一
- 数据结构与算法一
- JS数据结构与算法(二)
- JS数据结构与算法(三)
- 数据结构与算法javascript描述(一) Node.js 运行readline
- 数据结构与算法总论(一)
- 数据结构与算法分析(一)
- 算法与数据结构(一)--快速排序
- 数据结构与算法(一)概论
- 【数据结构与算法分析(一)】排序
- 原生JS实现AJAX的思路
- 内存分配之分段管理以及分段和分页的区别
- js的this用法
- js正则表达式使用变量
- Struts2入门详解(二)
- JS数据结构与算法(一)
- 树莓派USB摄像头和motion实现网络监控
- maven多war包项目整合
- 自定义HttpMessageConverter接受JSON格式的数
- IntelliJ IDEA查找依赖关系,解决jar包冲突
- 错误提示:“FluentNHibernate.Cfg.FluentConfigurationException”类型的未经处理的异常在 FluentNHibernate.dll 中发生
- Linux系统下ACM时间查看修改和文件目录权限处理
- 知其所以然
- svn 出现clean up 死循环时,或者无法提交提示错误