您的位置:首页 > 编程语言 > C语言/C++

C语言:顺序查找和二分查找

2017-07-26 09:59 239 查看
任务代码:

顺序查找元素:

#include <stdio.h>

#define SIZE 10
int main()
{
int a[SIZE]={1,2,3,4,5,6,7,8,9,10};
int index=-1;//如果末尾没有找到,默认函数为=-1
int i,number;
printf("请输入要查找的数据:");
scanf("%d",&number);

//顺序查找
for(i=0;i<SIZE;i++)
{
if(a[i]==number)
{
index=i;
break;
}
}

//输出结果
if(index>0)
{
printf("找到了这个数%d,位于数组的第%d个!",number,index+1);
}
else
{
printf("没有找到数字!");
}
return 0;
}


二分查找方法:

#include <stdio.h>

#define SIZE 10
int main()
{
int a[SIZE]={1,2,3,4,5,6,7,8,9,10};
int index=-1;//如果末尾没有找到,默认函数为=-1
int i,key;
printf("请输入要查找的数据:");
scanf("%d",&key);

//二分查找
/*二分查找的前提是你所查找的数字必须已经是会有序数组!!!!*/
int low,high,mid;
low=0;//代表数组第一个数
high=SIZE-1;//代表数组最后一个数
while(low<=high)//在没有查找到最后一个数的情况下继续执行
{
mid=(low+high)/2;//设置mid为数组中间那个数
if(a[mid]==key)//恰好等于的情况
{
index=mid;
break;
}
else
if(a[mid]>key)
{
high=mid-1;//将mid赋值给高的那一边的下一位
}
else
{
low=mid+1;//将mid 赋值给低的那一边的下一位
}
}

//输出结果
if(index>0)
{
printf("找到了这个数%d,位于数组的第%d个!",key,index+1);
}
else
{
printf("没有找到数字!");
}
return 0;
}


执行情况:



知识总结:





!!!!局限性是,二分查找必须针对有序的,无重复数列!!!!在使用的时候必须先将数列有序化,如果要技术出现次数必须使用其他算法!

心得体会;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: