本文主要是介绍折半查找(又称二分查找),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
思路:将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如 果x< a[n/2],则我们只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列)。如果x>a[n/2],则我们只要在数组a的右 半部继续搜索x。
1.必须采用顺序存储结构
2.必须按关键字大小有序排列,即数组有序。
#include <stdio.h>
int main()
{int low,height,mid,key,judge=0;//judge用于判断是否找到 int array[9]={5,13,19,21,37,56,64,75,80};low = 0;height=8;int length=sizeof(array)/sizeof(int);scanf("%d",&key); while(height>=low)//只需比较下界和上界,如果上界减到小于下界则为退出条件 {mid = (low+height)/2;if(key==array[mid]){judge=1;break;}else if(key<array[mid]){height=mid-1;} elselow = mid+1;}if(judge) printf("查找成功!index=%d",mid);else printf("查找失败!"); return 0;
}
这篇关于折半查找(又称二分查找)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!