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

第4周 C语言及程序设计提高例程-20 经典:查找的艺术

2016-04-22 07:11 691 查看
1、数组中的基本操作:顺序查找元素

问题及代码:

#include <stdio.h>
#define SIZE 10
int main( )
{
int d[SIZE]={34, 43, 98, 72, 12, 47, 31, 43, 1, 78};
int i,key,index=-1;
printf("Input a key you want to search: ");
scanf("%d" , &key);
for(i=0; i<SIZE; i++)
if(key == d[i])
{
index = i;
break;
}
if(index >= 0)
printf("The index of the key is %d .\n", index);
else
printf("Not found.\n");
return 0;
}
运行结果:





知识总结:

学习心得:

2、用二分方法查找有序数组:一次比较, 缩减一半的规模

#include <stdio.h>
#define SIZE 10
int main( )
{
int d[SIZE] = {1, 3, 9, 12, 32, 41, 45, 62, 75, 77};
int low, high,mid,key,index=-1;
printf("Input a key you want to search: ");
scanf("%d" , &key);
low=0,high=SIZE-1;
while(low<=high)
{
mid=(low+high)/2;
if(d[mid]==key){
index=mid; break;
}
else if(d[mid]>key)
high=mid-1;
else
low=mid+1;
}
if(index >= 0)
printf("The index of the key is %d .\n", index);
else
printf("Not found.\n");
return 0;
}
运行结果:



知识总结:

二分法查找方式的运算。

学习心得:

不太明白low与high定义的目的是为什么?在求出mid之后,赋值两个low、high有何用途?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: