#include<iostream>using namespace std;const int size=16;void taxis(int score[],int num){ //选择排序 for(int i=0;i<num-1;i++) { int min=i; for(int j=i+1;j<num;j++) if(score[j]<score[min]) min=j; int temp=score[i]; score[i]=score[min]; score[min]=temp; }}int Res(int score[],int num,int lookup){ //折半查找 int lo=0, mid, hi=num-1, ans=-1; for(;hi-lo>1;) { mid=(hi-lo)/2+lo; if(score[mid]==lookup) ans=mid; if(score[mid]>lookup) hi=mid; else lo=mid; } if(ans==-1) { if(score[hi]==lookup) ans=hi; if(score[lo]==lookup) ans=lo; } return ans;}void main(){ int score[size]; for(int i=0;i<size;i++) cin>>score[i]; taxis(score,size); for(i=0;i<size;i++) cout<<score[i]<<" "; cout<<endl; int lookup, ans; cout<<"What number are you looking up? "; cin>>lookup; ans=Res(score,size,lookup); cout<<score[ans]<<endl;} //输入16个整数,排序,输出,外加查找,只是将书上的2个例子串连了一下

评论