当前位置:首页 > 日记 > 正文

javascript数据结构及算法的检索算法

javascript数据结构及算法的检索算法
查找数据的方法有2种,顺序查找和两点查找。顺序查找适用于元素中的随机元素列表。两个点查找适合排序的元素列表。两个点查找更有效,但它必须是一组列表元素。

一:序列查找

顺序查找,从列表的第一个元素开始,判断列表元素逐一直到他们找到想要的结果,或直到最后没有找到他们想要的元素。

代码如下:

功能seqsearch(数据,ARR){
对于(var i = 0;i < arr.length;+ +我){
如果(ARR {我} = =数据){
返回true;
}
}
返回false;
}
我们还可以返回与元素位置相匹配的序列查找函数,代码如下所示:
功能seqsearch(数据,ARR){
对于(var i = 0;i < arr.length;+ +我){
如果(ARR {我} = =数据){
还我;
}
}
返回- 1;
}
二:找到最小值和最大值

求数组中最小值的算法如下:

1。将数组的第一个元素分配给一个变量,这是最小值。

2。开始遍历数组,并将第二个元素与当前最小值进行比较。

三.如果当前元素的值小于当前最小值,则将当前元素设置为新的最小值。

4。移动到下一个元素,重复步骤3。

5。当程序完成时,最小值存储在这个变量中。

代码如下:
功能findmin(ARR){
VaR最小= ARR { 0 };
对于(var i = 1;i < arr.length;+ +我){
如果(ARR {我} < min){
min = ARR {我};
}
}
返回min;
}
查找上面的最大和最小算法与数组中第一个元素的值相似,设置为最大值,然后在每个数组元素和最大剩余值上循环,如果当前元素的值大于当前值的最大值,则分配给最大值的元素值:
功能findmax(ARR){
VaR最大= ARR { 0 };
对于(var i = 1;i < arr.length;+ +我){
如果(ARR {我} >最大){
马克斯= ARR {我};
}
}
返回最大值;
}
三:两点查找法。

如果你所寻找的数据是有序的,双点查找算法比顺序搜索算法更有效:

1。将数组的第一个位置设置为下边界(0)。

2。将数组的最后一个元素的位置设置为上边界(数组的长度减少1)。

三.如果下边界等于或小于上边界,则执行以下操作:

将中间点设为(上边界加下边界)2。

如果中间点元素小于查询的值,则下边界设置为中间点元素加1的下标。

如果中点元素大于查询值,则上部边界设置为减号1。中点元素。

否则中间点元素是要查找并返回的数据。

代码如下:
两种搜索算法
功能折半查找(数据,ARR){
VaR下界= 0;
arr.length VaR上限= 1;
而(下界上界){
VaR中= math.floor((上限+下限)/ 2);
如果(ARR {中} <数据){
下界=中+ 1;
} else if(ARR {中} >数据){
上限=中1;
{ }人
回中;
}
}
返回- 1;
}
快速排序
函数qsort(列表){
如果(list.length = = 0){
返回{ };
}
存储小于该值的引用值。
var左};
存储大于引用值
var;
var =列表{ 0 };
对于(var i = 1;i < list.length;i++){
如果(列表{ } <枢轴){
Left.push(表{我});
{ }人
Right.push(表{我})
}
}
返回qsort(左),Concat(枢,qsort(右));
}
/ /测试代码
风险值= { 0,9,1,8,7,6,2,3,5,4 };
var list = qsort(数字);
console.log(折半查找(6,表));
四:计算重复次数;

当两个点查找,折半查找()函数找到一个值,如果有其他相同的值出现在数据集,那么函数将位于相似的价值。换句话说,其他相同的值可能出现在已找到的值的左边或右边。

然后,我们最简单的解决方案是同时编写2个循环,遍历数据集到左边,然后在统计数据上迭代,然后重复或向右:
重复数计算
函数(数据,ARR){
var计数= 0;
VaR方法= { };
VaR的位置=折半查找(数据,ARR);
如果(位置> 1){
+计数;
Arrs.push({指标:计数});
对于(var i =位置1;i 0;;i){
如果(ARR {我} = =数据){
+计数;
Arrs.push({指标:计数});
{ }人
打破;
}
}
对于(var i =位置+ 1;i < arr.length;+ +我){
如果(ARR {我} = =数据){
+计数;
Arrs.push({指标:计数});
{ }人
打破;
}
}
}
回归方法;
}
测试重复码
var arr = { 0,1,1,1,2,3,4,5,6,7,8,9 };
VaR方法=数(1,ARR);
console.log(ARRS);
console.log(ARRS。长度);
如下图所示:

相关文章

js的方式在iframelongdesc属性获得

js的方式在iframelongdesc属性获得

属性,方式,电脑软件,js,iframelongdesc,本文阐述了JS在iframe获取longdesc属性。分享给你供你参考。以下是如下: longdesc属性指向一个页面包含描述信息。 您的浏览器不支持iframe。 长描述的URL是: (document.getelementbyid document.wr…

经典幽默爱人签名

经典幽默爱人签名

爱人,幽默,经典,电脑软件,世界上最接近的距离:开学的假期。 世界上最遥远的距离:从学校到假日。 他的借口太漂亮了,我怎么敢说不呢 她多久不肯留下我的心。 什么是最痛苦的,谁不喜欢它的人 最伤心的事是爱上一个你不应该爱上的人 这是蘑菇的名…

经典浪漫情人签名

经典浪漫情人签名

情人,浪漫,经典,电脑软件,所以,女人,我想娶你为妻。 傻孩子,我想娶你做你的新娘。 如果天气很好,你就呆在那儿。 如果风和雨是荒凉的,那么你很快就会回来。 一个鬼城,一个孤独的人,一个人。 空荡荡的监狱,一座城镇,让一个人。 我没有一个没有美丽外…

ai绘制一个雅丽标志图标

ai绘制一个雅丽标志图标

图标,绘制,标志,雅丽,电脑软件,本教程是向朋友介绍的,使用AI绘制梨罗图标方法。本教程比较简单,比较适合初学者学习,推荐过来,可以过来学习和制作思路,好的,喜欢的朋友,一起学习。 本教程是教你用ai绘制鸭梨的罗图标方法。这是一个伪标准教程。不…

如何用宝马制作一个朋友圈的广告

如何用宝马制作一个朋友圈的广告

宝马,如何用,朋友圈,广告,电脑软件,如何用宝马制作一个朋友圈的图片广告最近,朋友微信圈很火。我付不起广告费,也不能做官方广告。我的DIY也能做同样的广告。让我们看看怎么做。 近日,微信朋友圈已经是一个真正的火。我付不起广告费,也不能做官…

10简体中文入门知识介绍

10简体中文入门知识介绍

知识,简体中文,入门,电脑软件,本教程是向大家介绍徒手10简体中文版的入门知识,教程比较基础,适合刚入门的朋友学习,转发,希望能帮到您。 老让我介绍写意,我只是真的答应下来一些编剧---我心中真的不知道从哪里开始。我觉得这件事很广泛的矢量软…

选择列表框的列表框和反选举法的Ja

选择列表框的列表框和反选举法的Ja

列表框,选择,选举法,电脑软件,Javascript,本例介绍了Javascript的列表框选择ListBox逆法。分享给你供你参考。具体分析如下: 列表框和选择框通常由js代码操作,非常实用。 功能listboxselectdeselect(上市,选用){ VaR ListBox = document.getelementby…

用ps制作黑色正白色背景的方法

用ps制作黑色正白色背景的方法

方法,白色,黑色,背景,电脑软件,本教程是介绍给一个朋友,使黑色准时白色背景与PS.的背景教程是非常美丽的。方法很简单。推荐给你最喜欢的朋友。 使用PS制作背景(白色背景,黑色守时),教你简单地做,看看感兴趣的朋友。 方法/步骤 首先创建一个新层…

达达美的经典之美

达达美的经典之美

美的,之美,经典,电脑软件,想改变2015个最新的美学经典人格签名,你推荐属于你的美学签名的美学签名,并且更关注它吗。 你是我一生中最美好的回忆。 又是南方的风景,又是花季。 昨天在塔上,是镜月水。 北斗七星旁边,你和我一起排队,清风纯吻你的微…

QQ个性签名愤怒

QQ个性签名愤怒

个性签名,愤怒,电脑软件,QQ,一个无生命的,冷的,腐烂的,腐烂的,臭的东西,你告诉我它是心脏的心脏。 妈妈,他妈的不舒服 生气的时候,期望你哄的都知道谁都是爱。 也许你永远不知道我为什么生气 这个女孩嫉妒了。这证明她真的受伤了。那男孩嫉妒了。…

超级搞笑幽默个性签名

超级搞笑幽默个性签名

超级搞笑,个性签名,幽默,电脑软件,毕竟,我不是一种迷恋在我的全身。 在后期的学习、考试,突然拿手机搜索答案,老师把灯关了,我明亮的。 真正的勇士,敢于接受只有30的工作,敢说老师在一起。 全班最喜欢老师讲真话,不认为他说的对,只是因为觉得那样,时…