关键词不能为空

当前您在: 主页 > 英语 >

顺序查找、折半查找

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2020-10-21 15:07
tags:按顺序

掺和拼音-学前班数学试卷免费下载

2020年10月21日发(作者:蒋祝平)


顺序查找与折半查找的比较
顺序查找简单的从头到尾的查找,对数据没有要求,而折半 查找要求查找的
数据是按顺序排列的,然后找中间数,若中间数大,则把中间数当成最后一个数
找他们的中间数。反之,则把中间数当成第一个数。找他们的中间数。这样,一
直找下去,直到找到或者 中间数和第一个数或者最后一个数相等。它较顺序查找,
效率较高。
依据顺序查找算法和折半 查找算法的特点,对下面的两个查找表选择一个合适的
算法,设计出完整的C源程序。并完成问题:
查找表1:{ 8,15,19,26,33,41,47, 52,64,90 },查找key = 41
查找表2:{12,76,29,15,62,35,33,89,48,20 },查找key =35
查找key=41的算法: 比较次数:
查找key=35的算法: 比较次数:
查找key=41的算法:折半查找法 比较次数:3次
查找key=35的算法:顺序查找法 比较次数:6次
顺序查找算法实现代码:
int SequenceSearch(int a[], int n, int key)
{ int i=0,cnt=0;
for (i=0; i {cnt++;
if (a[i] == key)
{printf(
return key }
}
return -1;
}
l折半查找算法实现代码:
int BinarySearch(int a[], int n, int key)
{
int low=0,high=n-1,mid=0;
int cnt=0;
while (low<=high)
{ cnt++;
mid = (low+high)2;
printf(
if (a[mid] == key)
{printf(
return key;
}
if (a[mid]>key)
{high=mid-1;}
else
{low=mid+1;}
}
return -1;}

1


*折半查找法例题1*
#include
void main()
{
int a[10]={8,18,27,42,47,50,56,68,95,120};
int b=8; 要查找的数
int min=0; int max=9;
int mid=(min+max)2;
while(b!=a[mid])
{
if(b>a[mid])
{min=mid;mid=(min+max)2;}
else if(b{max=mid;mid=(min+max)2;}
if(mid==min)
break;
}
if(b==a[mid])
{printf(
else if(b==a[max])
{printf(
else
printf(没有此数n
}
*折半查找法例题2*
#include
int main(){
int key=0;
printf(请输入要查找的数:
scanf(
int data[10]={1,3,5,7,8,9,13,18,22,28};
int ret=BinarySearch(key,data);
if(ret>=0)
printf(是数组中的第%d个数n
else
printf(在数组中未找到!n
system(
return 0;
}
int BinarySearch(int key,int data[])
{
int low=0,high=9,middle;
while( low>=middle ){ *查找结束条件*
int middle= (low+high)2 *获取数组中间位置*

2


if( key==data[middle] ) *如查当前数据元素的值等于
key*
return middle; *返回所在位置*
if(key high=(low+middle)2 *在数组的前半部继续查找*
else
low=(middle+high)2 *在数组的后半部继续查找*
}
return -1; *返回查找不成功标记*
}

*简单排序法*
#include
#define N 6
void swap(int *a, int *b)
{int t;
t=*a;
*a=*b;
*b=t;}
void main()
{int a[6]={15,14,22,30,37,11};
int min;
for(int i=0;i{min=i;
for(int j=i+1;j{if(a[i]min=j;
}
swap(a+i,a+min);
}
for(i=0;iprintf(
}
2013年高考题
36. 折半查找也称为二分查找, 适用于有序数组,其查找的基本过程是:先确定
待查记录所在的范围,然后逐步缩小范围,直到找到,或 找不到该记录为止。
假定数组按照升序排列,对于给定值K,从数组中间位置开始比较,如果当
前数据元素的值等于k,则查找成功。否则,若k小于当前数据元素的值,
则在数组的前半部继续查找; 反之,则在数组的后半部继续查找,依次重复
进行,直至获得查找成功或不成功的结果。请补充完成下列 程序中的相应部
分:
#include

3


int main(){
int key=0;
printf(请输入要查找的数:
scanf(
int data[10]={1,3,5,7,8,9,13,18,22,28};
int ret=BinarySearch(key,data);
if(ret>=0)
printf(是数组中的第%d个数n
else
printf(在数组中未找到!n
system(
return 0;
}
int BinarySearch(int key,int data[]){
int low=0,high=9,middle;
while( ① ){ *查找结束条件*
int middle= ② *获取数组中间位置*
if( ③ ) *如查当前数据元素的值等于k*
return middle; *返回所在位置*
if(key ④ *在数组的前半部继续查找*
else
⑤ *在数组的后半部继续查找*
}
return -1; *返回查找不成功标记*
}
4

梦幻鬼鱼-耘怎么读


宵禁的意思-拍砖


pdf格式是什么意思-cmyk分别代表什么


maas-ss是什么意思


怎么走秀-4380


条纹松鼠-一骑当千dd


新概念英语第三册mp3下载-音数


得心应手的近义词-颈总动脉



本文更新与2020-10-21 15:07,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/416278.html

顺序查找、折半查找的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文