C++ 折半查找
注意代码细节!!!!!!!!!
#include <iostream>
#include<stdlib.h>
#include<fstream>
using namespace std;
#define MaxNum 100 //折半查找的最大元素数
#define Type int//数据类型
void BinSear(Type *arr,int num,Type temp){
int s=0,e=num-1;
int mid=(s+e)/2;
while(s<=e){
if(arr[mid]==temp){
cout<<"您查找的"<<temp<<",位于数组的第"<<mid+1<<"位置"<<endl;
return ;
}else if(arr[mid]>temp){
e=mid-1;
}else{
s=mid+1;
}
mid=(s+e)/2;
}
cout<<"对不起,您查找的数字不在数组中!"<<endl;
}
int main()
{
Type arr[MaxNum];
int num;
cout<<"请输入元素的个数:"<<endl;
cin>>num;
//防止数组下标越界
while(num<=0||num>MaxNum){
cout<<"您输入的元素不合法!"<<endl;
cout<<"请重新输入:";
cin>>num;
}
for(int i=0;i<num;i++){
cout<<"请输入第"<<i<<"个元素:";
//保证元素的合法性
if(!(cin>>arr[i])){
cout<<"此次输入有误,已回滚,请重新输入!!!!"<<endl;
cin.clear();//清除cin的缓冲区
i--;
continue;
}
}
sort(arr,arr+num);
/*
for(int i=0;i<num;i++){
cout<<"排序后第"<<i<<"个元素是:"<<arr[i]<<endl;
}
*/
Type temp;
cout<<"请输入您要查询的内容:";
cin>>temp;
BinSear(arr,num,temp);
return 0;
}</span>