折半查找法
2013-04-07 07:53
155 查看
基本思想: 设查找数据的范围下限为l=1,上限为h=5,求中点m=(l+h)/2,用X与中点元素am比较,若X等于am,即找到,停止查找;否则,若X大于am,替换下限l=m+1,到下半段继续查找;若X小于am,换上限h=m-1,到上半段继续查找;如此重复前面的过程直到找到或者l>h为止。如果l>h,说明没有此数,打印找不到信息,程序结束。
#include <iostream> using namespace std; int main(int argc,char ** argv) { int array[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; int key; int middle,upper,lower; //读入要查找数 cout<<"输入要查找的数字:"; cin>>key; //查找 for(upper=14,lower=0;lower<=upper;) { middle=(upper+lower)/2; if(key==array[middle]) { cout<<"要查找的数字是第"<<middle+1<<"个元素"<<endl; return 0; } else if(key>array[middle]) { upper=middle-1; } else if(key<array[middle]) { lower=middle+1; } } if(lower>upper) { cout<<"查无此数"<<endl; } return 0; }
相关文章推荐
- 折半查找法
- 使用折半查找法删除
- 折半查找法
- 折半查找法(仅适用于已排好顺序)
- 折半查找法
- JAVA二分查找法(折半查找法)
- 折半查找法寻数
- 折半查找法
- java用递归实现折半查找法
- 折半查找法的两种实现
- (面试题)用折半查找法在一组整形数组中查找某个数据
- 优化的选择排序和折半查找法
- C语言折半查找法练习题冒泡排序
- 数组应用之最大值查询、排序算法、折半查找法、数组元素反转
- 折半查找法
- 折半查找法(二分法)C语言
- 折半查找法(递归)
- 折半查找法(C语言)
- NSArray 折半查找法
- 冒泡排序的优化 折半查找法 循环打印三角形 耶稣13门徒找叛徒 有1000000个数,每个数取值范围是0~999999,找出其中重复的数,重复的次数。