VB对分查找算法如果是偶数该从哪个开始找
对分查找,过程如下:
一,首先初始化,确定查找范围:1 -- 5
设查找的范围起始下标为S,终止下标为E,则:S = 1,E = 5。
二,重复以下循环,两个步骤
1,求中点数组下标:M = Int((S + E)/2)
2,判断中点元素与要找的数是否相等:d[M] = Key? (这里假设数组为D,要找的数为Key)
若d[M] = Key 则找到了;
否则就没找到;需要根据判断 d[M]Key?作为条件判断)。
这里d[M]<Key?若是,舍弃中点以前(包括中点)的所有元素,即:S = M + 1 ,E = E;
否若,舍弃中点以后(包括中点)的所有元素,即:S = S ,E = M - 1;
3,判断若 S > E (起始下标超过终止下标了),结论Key是找不到了;
否则,继续执行1,进行下一次查找。
现在看你的问题:
要找10,第1次中点是3,即:10>d[3],从而得到第2次的查找范围为,4-5
第2次中点是4,即:10=d[4],从而得到第2次就找到的结论
你说的是二分查找吧,二分查找一般都是左除右加1,
意思是如果现在你的查找区间是(k,m),
那么中间点 mid = (k + m) / 2;
如果你查找的节点在左边就查找 (k, mid)
在右边就查找(mid+1,m)
这个不用总数是奇数还是偶数。
连这都不知道 挂科活该。。。。。!
都可以的。只是在边界处略有不同。
算法与数据结构区别
详情请查看视频回答
计算机二级考试(江西考区)试题c语言及答案
B)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n\/2)C)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)D)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)(2)算法的时间复杂度是指 A)算法的执行时间 B)算法所处理...
在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是...
【答案】:C C。【解析】本题考查查找的算法,对于长度为n的有序线性表,在最坏情况下,二分法查找只需比较log2n次。
二分查找算法流程图怎么画?
else A-->F(递归查找右半部分);E-->G(返回false)F-->G(返回false)G-->结束;```其中,开始节点A表示算法的起点,假设数组a有n个元素,则节点B表示从数组a的第一个元素开始查找。在节点B处,取数组中间位置mid作为比较的基准点。然后节点C与目标值target比较大小,如果相等则返回true表示找到了...
在97个记录的由于顺序表中进行二分查找,最大比较次数是?
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。根据顺序表二分法查找比较次数的计算公式:当顺序表有n个关键字时:查找失败时,至少比较a次关键字;查找成功时,最多比较关键字次数是b。所以,当...
二分法在数学中有哪些应用?
二分法(又称二分搜索法或对分法)是一种在有序数组中查找特定元素的搜索算法。它的基本原理是每次比较待查找元素与数组中间元素的大小,然后根据比较结果缩小搜索范围,直到找到目标元素或者搜索范围为空。二分法在数学和计算机科学中有广泛的应用,以下是一些常见的应用场景:查找问题:二分法最初用于解决...
折半查找和顺序查找差异?
是傻瓜式的从头到尾查找,而折半查找是在已排好序的表里,折半地查找,比如一个升序的表,第一个元素是a,中间位置元素是b,最后一个元素是c,一开始,将需要查找的元素x跟中间位置的元素b比较,若x>b,则接下来查找b-c之间的元素,否则查找a-b之间元素,,接下来同理,,,本人一个字一个字打的,给点分给点鼓励哈...
数据结构笔试题
以邻接表为存储结构 写出连通图的深度优先搜索算法 设有一组关键字{ } 采用散列函数 H(key)=key MOD 采用线性探测法解决冲突 试在 ~ 的散列地址空间中对该关键字序列构造散列表 数据结构导论试题参考答案一 单项选择题(每小题 分共分) ? C ? B ? D ? B ? A...
离散数学:一对一函数和映上函数,求答案,详细解答?
如果您想了解在对百万条目的数据库进行排序之后,搜索是如何更快地运行的,那么您将会遇到“二分查找”的概念。要理解它的机制,你需要理解对数和递归方程。或者,如果你想分析一个时间序列,你可能会遇到“周期函数”和“指数衰减”这样的概念。统计数据 掌握统计和概率的基本概念的重要性怎么强调都不...
求2010江西省9月份计算机二级C语言题库,万分感谢,
A)对长度为n的有序链表进行查找,最坏清况下需要的比较次数为n B)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n\/2) C)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n) D)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n) (2)算法的时...
枕宋同博: 以10个数为例,应该从第5位开始查找.fix((1+10)/2),(开始下标+结束下标)除2再用fix函数截掉小数部分
福州市17136187217: 对分查找的顺序?
枕宋同博: 把条件设成偶数执行,奇数不执行.如if x\2=0 then~ else~
福州市17136187217: VB对分查找 - ?
枕宋同博: 对分查找,过程如下:一,首先初始化,确定查找范围:1 -- 5 设查找的范围起始下标为S,终止下标为E,则:S = 1,E = 5.二,重复以下循环,两个步骤 1,求中点数组下标:M = Int((S + E)/2) 2,判断中点元素与要找的数是否相等:d[M] = ...
福州市17136187217: VB语言怎样选出偶数并由小到大排列呢??? - ?
枕宋同博: 我就说说算法吧,有了算法代码就不难写了 假设待选择的一组数字为数组a[n],结果也用一数组b[n],然后用 a[i](i=0,1,2....n)MOD 2 和0 比较,如果相等则是偶数,不等则是奇数 相等的情况下,我们将a[0]存到b[n](如果第一个数是偶数,就把它默认存到b[n]的最后一个位置上,假设最大) 然后判断a[1]是不是偶数,如果是则和b[n]比较,比b[n]大则b[n-1]=b[n],b[n]=a[1], 这种方法用循环会非常容易实现,需要设置一个记数器,记录b[n]中已经存了多少个偶数. 当然用递归更好. 你也可以先将偶数选出来放到一数组,再排序
福州市17136187217: VB怎么用分支结构(if..then..else)判断奇数和偶数 - ?
枕宋同博: if (intNum mod 2=0) then mgsbox "这个数是偶数“ else mgsbox "这个数是奇数“ endif
福州市17136187217: vb顺序查找 对分法 - ?
枕宋同博: Command3_Click()中do while 死循环了,每次j没有加1 把j=1 改为j=j+1
福州市17136187217: 对分查找的问题… - ?
枕宋同博: 你说的是二分查找吧,二分查找一般都是左除右加1, 意思是如果现在你的查找区间是(k,m), 那么中间点 mid = (k + m) / 2; 如果你查找的节点在左边就查找 (k, mid) 在右边就查找(mid+1,m) 这个不用总数是奇数还是偶数. 连这都不知道 挂科活该.....!
福州市17136187217: VB 对分法是怎样的 - ?
枕宋同博: 对分查找又称为折半查找、二分查找.的算法:将给定值与有序顺序表(即已经按关键字的大小排好序的数据序列)的中间位置元素的关键字比较,相等则查找成功,不等则根据比较结果在表的前半部分或后半部分按相同方法继续查找,直到查...
福州市17136187217: 在VB中用折半查找法查找 - ?
枕宋同博: Dim arr Private Sub Command1_Click() low = 0 high = 9 x = -1 a = Int(Text2.Text) Do While low <> high n = (low + high) \ 2 If a = arr(n) Then x = n Exit Do ElseIf a > arr(n) Then low = n Else high = n End If Loop If x >= 0 Then Text3.Text = x + 1 Else ...
福州市17136187217: 随机产生50个从小到大的数据(范围要求大于等于30且小于等于200),用对分法查找指定数值. - ?
枕宋同博: 关键算法是通过随机数生成指定范围的数.我们知道,vb内置的随机数取值范围是[0,1), 170*Rnd+30就可以表达大于等于30且小于等于200的数了,如果是整数,就是 int(170*Rnd)+30 所以随机产生50个从小到大的数据(范围要求大于等于30且小于等于200)代码为:Dim a(1 To 50) As Integer Dim i As Integer Randomize For i = 1 To 50 a(i) = Int(Rnd * 170) + 30 Next i 对分法查找指定数值是什么意思?