JavaScript数据结构与算法之检索算法示例【二分查
网络编程 2021-07-04 15:50www.168986.cn编程入门
这篇文章主要介绍了JavaScript数据结构与算法之检索算法,结合实例形式分析了二分查找法、计算重复次数相关算法原理与使用技巧,需要的朋友可以参考下
本文实例讲述了JavaScript数据结构与算法之检索算法。分享给大家供大家参考,具体如下
javascript数据结构与算法---检索算法(二分查找法、计算重复次数)
/只需要查找元素是否存在数组,可以先将数组排序,再使用二分查找法/ function qSort(arr){ if (arr.length == 0) { return []; } var left = [];//存储小于基准值 var right = [];//存储大于基准值 var pivot = arr[0]; for (var i = 1; i < arr.length; i++) { if (arr[i] < pivot) { left.push(arr[i]); } else { right.push(arr[i]); } } return qSort(left).concat(pivot, qSort(right));//递归 } /二分查找法,基本原理如下 将数组的第一个位置设置为下边界(0).将数组的一个元素所在的位置设置为上边界(数组的长度减1)。 若下边界等于或小于上边界,则做如下操作 (1).将中点设置为(上边界加上下边界) 除以2. (2). 如果中点的元素小于查询的值,则将下边界设置为中点元素所在下标加1. (3). 如果中点的元素大于查询的值,则将上边界设置为中点元素所在下标减1. (4). 否则中点元素即为要查找 的数据,可以进行返回。/ function binSearch(arr,data) { var lowerBound = 0; var upperBound = arr.length - 1; while(lowerBound <= upperBound) { var mid = Math.floor((upperBound + lowerBound)/2); if(arr[mid] < data) { lowerBound = mid + 1; }else if(arr[mid] > data) { upperBound = mid - 1; }else { return mid; } } return -1; } / 计算重复次数 当binSearch()函数找到某个值时,如果在数据集中还有其他相同的值出现,那么该函数会定位在类似值的附近。 换句话说,其他相同的值可能会出现已找到值的左边或右边。 如果在数据集中能找到这个值,那么这个函数将开始通过两个循环来统计这个值出现的次数。 第一个循环向下遍历数组,统计找到的值出现的次数,当下一个值与要查找的值不匹配时则停止计数。 第二个循环向上遍历数组,统计找到的值出现的次数,当下一个值与要查找的值不匹配时则停止计数。 / function count(arr, data) { var count = 0; var position = binSearch(arr, data); if (position > -1) { ++count; for (var i = position-1; i > 0; --i) { if (arr[i] == data) { ++count; } else { break; } } for (var i = position+1; i < arr.length; ++i) { if (arr[i] == data) { ++count; } else { break; } } } return count; } var nums = [90,43,49,15,23,2,70,23,20,95,69,23,29,26]; var list = qSort(nums); console.log(list); var findnum = 23; console.log("需要查找的数据为: " + findnum); var retVal = binSearch(list, findnum); if (retVal >= 0) { console.log( "找到 " + findnum + "的位置为 "+retVal); }else { console.log(" is not in array."); } console.log(findnum + "重复次数为"+count(list, findnum));
使用在线HTML/CSS/JavaScript代码运行工具:测试上述代码,可得如下运行结果
更多关于JavaScript相关内容感兴趣的读者可查看本站专题《》、《》、《》、《》、《》、《》及《》
希望本文所述对大家JavaScript程序设计有所帮助。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程