> 首页 > 生活 > 百科 > 顺序查找和折半查找

顺序查找和折半查找

来源:网络 作者:佚名 时间:04-26 手机版

1、顺序查找:在一个已知无序或有序队列中找出与给定关键字相同的数的具体位置。原理是让关键字与队列中的数从最后一个开始逐个比较,直到找出与给定关键字相同的数为止,它的缺点是效率低下。

2、折半查找:它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关

顺序查找算法和折半查找算法的时间复杂度各是多少

假设对n个元素的折半查找需要消耗的时间为t(n)。容易知道:

如果n

=

1,则t(n)

=

c1

如果n

>

1,则t(n)

=

t(n/2)

+

c2

其中n/2需要取整,c1、c2都是常数

对于正整数n,可以有:

t(n)

=

t(n/2)

+

c2

=

t(n/4)

+

2c2

=

t(n/8)

+

4c2

=

=

t(n/(2的k次方))

+

kc2

一直推演下去,直到n/(2的k次方)等于1,也就是k

=

log2(n),此时等式变为:

t(n)

=

t(1)

+

kc2

=

c1

+

log2(n)c2

于是时间复杂度为log2(n)。注意log2(n)和log(n)其实是同样的复杂度,因为它们之间仅仅差了一个常量系数而已。

这个是不严格的推导,因为没有考虑整数除以2之后可能有余数的情况。但即使有余数,也是不影响时间复杂度的。

什么是顺序查找什么是二分查找什么是对半查找

顺序

int find(int a[],int n,int x)//a[0]~a[n-1]的数组中,查询元素x,数据类型为int

{

int i;

for(i=0;i<n;i++)

{

if(a[i]==x)

return i;//找到,返回编号

}

return -1;//找不到

}

折半查找

int binaryfind(int a[],int n,int x)//参数同上

{

int low,high,mid;

low=0;high=n-1;

while(low<=high)

{

mid=(low+high)/2;//计算中间位置

if(a[mid]==x) return mid;

if(a[mid]>x) high=mid-1;//假定a为递增数列

else low=mid+1;

}

return -1;//找不到

}

/

指定一个位置用该位置上的元素和数组元素进行比较。

在内循环结束一次,该位置出现最值。

/

public static void sort_1(int[] arr)

{

for(int x=0; x<arrlength-1; x++)

{

for(int y=x+1; y<arrlength; y++)

{

if(arr[x]>arr[y])

{

}

}

}

}

/

相邻两个元素进行比较。

内循环结束一次,后位出现最值。

/

public static void sort_2(int[] arr)

{

for(int x=0; x<arrlength-1; x++)

{

for(int y=0; y<arrlength-x-1;y++)

{

if(arr[y]>arr[y+1])

{

}

}

}

}

y<arrlength-x-1:

-x:为了减少参与比较的元素的个数。

-1:为了避免脚标越界。

public static void swap(int[] arr,int a,int b)

{

//arr[a] = arr[a]^arr[b];

//arr[b] = arr[a]^arr[b];

//arr[a] = arr[a]^arr[b];

int temp = arr[a];

arr[a] = arr[b];

arr[b] = temp;

//

}

4,折半查找:前提:必须是有序的数组才有效。

public static int binarySearch(int[] arr,int key)

{

int start=0,end=arrlength-1,mid;

while(start<=end)

{

mid = (start+end)>>1;

if(key>arr[mid])

start = mid + 1;

else if(key<arr[mid])

end = mid - 1;

else

return mid;

}

return -1;

}

相关推荐:

顺序查找和折半查找

开机后停留在bios界面

肖战在哦!我的皇帝陛下中饰演什么角色

开机后显卡风扇声音很响

顺心有什么成语

电视剧最美的青春张曼玲结局是什么

开机花屏然后死机

顺铣与逆铣是如何定义的

标签: [db:标签]

声明:《顺序查找和折半查找》一文由排行榜大全(佚名 )网友供稿,版权归原作者本人所有,转载请注明出处。如果您对文章有异议,可在反馈入口提交处理!

最近更新

  • 顺序查找和折半查找

    1、顺序查找:在一个已知无序或有序队列中找出与给定关键字相同的数的具体位置。原理是让关键字与队列中的数从最后一个开始逐个比较,直到找出...

    百科 日期:2023-04-26

  • 奥迪A31.4T油耗是多少(奥迪a3

    奥迪A31.4T油耗是多少A3 1.4T奥迪工信部综合油耗5.6-6.1(L/100km),受驾驶员习惯、路况、天气影响。新车与老款奥迪A3相比,主要在配置上进行升...

    汽车 日期:2023-04-26

  • 开机后停留在bios界面

    这说明用户的电脑系统损坏,无法正常启动。可以从以下几个方面解决:1、可能是用户的电脑主板各设备插接有问题,需要关闭电源拔出插座,然后把各点...

    百科 日期:2023-04-26

  • 刚刚被我国制裁的两家美国机构,都有啥来头?

    美国国会大厦。资料图。图/新华社4月7日,中国外交部宣布,对美国哈德逊研究所、里根图书馆及其负责人采取反制措施。外交部表示,美方不顾中方反...

    八卦 日期:2023-04-26

  • 青玄天的真实身份

    青玄天的真实身份是祖武下界第一妖孽。出生于九州大陆之青州的青家之中,曾拥有四象神体,神体排行榜排名第三,后为了追求更强力量而丢弃,其天赋...

    电影 日期:2023-04-26

  • 2023上海半马装备领取预约方式+领取时间地点

    2023上海半程马拉松4月16日(星期日)7:00开跑,装备4月14日-15日领取,为避免领物现场出现人员聚集,此次赛事采取分时段领物的形式,每位参赛者按照...

    景点 日期:2023-04-26

  • 肖战在哦!我的皇帝陛下中饰演什么角色

    肖战在《哦!我的皇帝陛下》中饰演北堂墨染。北堂墨染是水瓶座星主,北堂弈的皇叔,拥有预知能力。墨染奉先皇之命掌管兵权并行使辅政之责;当北堂弈...

    百科 日期:2023-04-26

  • 奥迪a31.4t动力好吗

    奥迪a31.4t动力好吗现在这一代奥迪A3也来自大众的PQ35平台,除了车身结构差异大之外,在悬架形式和动力系统上与国内第六代高尔夫1.4T车型非常...

    汽车 日期:2023-04-26

百科排行榜精选

邮箱不能为空
留下您的宝贵意见