C++源码:
#include<iostream>
#include<cstdio>
#include<conio.h>
#include<algorithm>
#include<cstdlib>
using namespace std;
const int M=10000;
int x,n,i;
int s[M];
int Binary(int n,int s[],int x)
{
int low=0;
int high=n-1;
//low指向数组的第一个元素,hing指向数组的最后一个元素
while(low<high)
{
int middle=(high+low)/2;
//middle为查找范围的中间值
if(x==s[middle])
return middle;
else if(x<s[middle])
high=middle-1;
else
low=middle+1;
}
return -1;
}
int main(){
cout<<"请输入数列中的元素个数n为:";
while(cin>>n)
{
cout<<"请依次输入数列中的元素n:";
for(i=0;i<n;i++)
{
cin>>s[i];
}
sort(s,s+n);
cout<<"排序后的数组为:";
for(i=0;i<n;i++)
{
cout<<s[i]<<" ";
}
cout<<endl;
cout<<"请输入要查找的元素:";
cin>>x;
i=Binary(n,s,x);
if(i==-1)
cout<<"该数列中没有要查找的元素:"<<endl;
else
cout<<"要查找的元素在第"<<i+1<<"位"<<endl;
}
getch();
return 0;
}
运行结果:
python源码:
s=[]
def binary_search(n,s,x):
low=0
high=n-1
while low<high:
middle = int((low + high) / 2)
if x==s[middle]:
return middle
elif x<s[middle]:
high=middle-1
else:
low=middle+1
return -1
n=int(input("请输入数列中的元素个数n="))
print("请依次输入数列中的元素:")
for i in range(n):
s.append(int(input()))
s.sort()
x=int(input("请输入要查找的元素:x="))
k=binary_search(n,s,x)
if k==-1:
print("该数列中没有找到要查找的元素!")
else:print("要查找的元素在第",k+1,"位")
运行结果: