为什么有序的单链表不能进行折半查找-小知识的简介

正在使用人数

话题:为什么有序的单链表不能进行折半查找问题详情:急!!!!拜托高手解答等级低分数不高请帮帮忙谢谢了回答:这是由链表的特性决定的。链表是很典型的顺序存取结构,数据在链表中的位置只能通过从头到尾的顺序检索得到,即使是有序的,要作其中的某个数据也必须从头开始。。

小知识:为什么有序的单链表不能进行折半查找-小知识

为什么有序的单链表不能进行折半查找-小知识

时间:2016-04-13 09:18    来源: 我爱IT技术网    编辑:佚名

话题:为什么有序的单链表不能进行折半查找

问题详情:急!!!!拜托高手解答 等级低 分数不高 请帮帮忙 谢谢了

回答:这是由链表的特性决定的。链表是很典型的顺序存取结构,数据在链表中的位置只能通过从头到尾的顺序检索得到,即使是有序的,要 作其中的某个数据也必须从头开始。这和数组有本质的不同。数组中的元素是通过下标来确定的,只要你知道了下标,就可以直接存储整个元素, a[5],是直接的。链表没有这个,所以,折半查找只能在数组上进行。

话题:C语言数据结构:折半查找法可以用单链表来实现吗

回答:这个问题很简单!单链每次都从头开始遍历,直到找到才停止,第一次就已经遍历了一半的空间了,如果第二次的在后一半的话,那就要再把前面遍历一遍,效率比顺序查找还要低很多。那就没必要用二分查找了。所以使用单链不合适

话题:如何实现链表折半查找

回答:public class BinaryList { private List _list=new List(); / / 找到最小匹配 间 / / 要 ( 入)的对象 / 间开始索引 / 间结束索引 / 是否空 private bool FindIntv(Ip obj, out int from, out int to) { 初值保证,能遍历所有元素 from=-1; to=_list.Count; if ( _list.Count=_list.Count) { to=_list.Count - 1; } return true; } public void Add( Ip obj ) { int from,to; if( FindIntv(obj, out from, out to) ) { if (obj.IsBefore(_list[from])) { _list.Insert(from, obj); } else if (obj.IsBefore(_list[to])) { _list.Insert(to, obj); } else _list.Insert(to + 1, obj); } else { _list.Add(obj); } }

参考回答:这是由链表的特性决定的。链表是很典型的顺序存取结构,数据在链表中的位置只能通过从头到尾的顺序检索得到,即使是有序的,要

话题:如何实现链表折半查找

回答:这是由链表的特性决定的。链表是很典型的顺序存取结构,数据在链表中的位置只能通过从头到尾的顺序检索得到,即使是有序的,要 作其中的某个数据也必须从头开始。这和数组有本质的不同。数组中的元素是通过下标来确定的,只要你知道了下标,就可以直接存储整个元素, a[5],是直接的。链表没有这个,所以,折半查找只能在数组上进行。至少我没想到什么好办法~~

参考回答:public class BinaryList { private ListIp _list=new ListIp(); / summary / 找到最小匹配 间 / /summary /

话题:单向链表为什么不能用折半 搜索?

回答:单向链表是对链表的访问要通过顺序读取从头部开始。 折半查找的先决条件是查找表中的数据元素必须是有序的。

参考回答:不支持随机访问要访问某个特定节点必须一个一个遍历过去不过有一种特殊的链表支持——跳跃表

话题:折半查找的适用条件?

问题详情:折半查找的适用条件?

回答:折半查找的适用条件: 1,有序表,对于无序表,实现需要“预处理”2,限于顺序存储结构,对于线性链表则无法有效地进行查找等 作。 折半查找是必须针对有序表并且不是线性链表。对于无序表,采用折半查找之前,需要排序,根据采用排序算法的不同,此时整个折半查找的时间复杂度需要考虑排序的时间,而不仅仅是折半查找的 时间复杂度。

参考回答:可以用数组存的皆可。 正负结果没有影响。 不过保证存储内容的有序性。平衡二叉树线段树都可以。

话题:试写出对此链表查找算法并说明是否可用折半查找.

问题详情: 求解!

回答:不能用折半查找,链表的检索是顺序查找,这是链表的缺点,时间复杂度是O(n). 折半查找法也称为二分查找法,它充分利用了元素间的次序 ,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如果xa[n/2],则我们只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列)。如果xa[n/2],则我们只要在数组a的右半部继续搜索x。二分搜索法的应用极其广泛,而且它的思想易于理解,但是要写一个正确的二分搜索算法也不是一件简单的事。第一个二分搜索算法早在146年就出现了,但是第一个完

话题:线性表的折半查找问题

问题详情:为要寻找的线性表,而这个n为 的进行折半法的查找程序,使用

回答: ,,记得,,线性表的折半查找的前提是对线性表,而这个链表虽然是一种线性表,但是他的 不是连续的,所以不可能完成查找,,,,,,,,,,,记得啊,,,

参考回答:基本没注释、命名不标准,懒得看,养成写注释的好 惯,否则没人喜欢看你的 码

话题:什么是折半查找

问题详情:在程序设计里,有一种方法叫做“折半查找法”,什么是折半查找

回答:: baike.baiduhttp://www.zhishizhan.net/xiaozhishi/view/54603 算法思想: 将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找 间缩小一半。 折半查找是一种高效的查找方法。它可以明显减少比较次数,提高查找效率。但是,折半查找的先决条件是查找表中的数据元素必须有序。 算法步骤描述: step1 首先确定整个查找 间的中间位置 mid=( left + right )/ 2 step2 用待查关键字值与中间位置的关键字值进行比较; 若相等,则查找成功 若大于,则在后(右)半个 域继续进行折半查找

参考回答:#include stdio.h #define N 51 void main(void) { int a[N]; int i,n,num; int top,bottom,mid; int flag=1; 如果在表列中找

话题:有关键字递增的数组A 30 ,按折半查找进行查找,查找程

回答:构造折半查找的判定树就可以了第1层1个结点第2层2个结点第3层4个结点第4层个结点,共计1+2 + 4 +=15剩余30-15=15在第5层,也就是说比较次数为5次,因此 正确

参考回答:算法的思想:序列排序顺序(升序或降序),跳转到在搜索过程中发现,这是第一个比较有序的系列中点,如果你正在寻找的元素值小

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)

猜你喜欢:

与“为什么有序的单链表不能进行折半查找-小知识”相关的热门小知识: