笔试编程题(二):二分查找

来源:互联网 发布:申请售后淘宝客佣金 编辑:程序博客网 时间:2024/05/23 13:06

(一)非递归实现二分查找(欢聚时代)

#include <iostream>using namespace std;int binarySearch(int num[],int length,int searchValue){int first=0;int last=length-1;while(first<=last)//<=而不是<{ int middle=first+((last-first)>>1);if(num[middle]==searchValue)return middle+1;else if(num[middle]>searchValue)last=middle-1;elsefirst=middle+1;}return -1;}int main(){int num[5]={1,2,3,4,5};int index=binarySearch(num,5,2);if(index==-1){cout<<"Not Find!"<<endl;}else{cout<<index<<endl;}return 0;}

(二)递归实现二分查找

#include <iostream>using namespace std;int binarySearch(int num[],int first,int last,int searchValue){if(first<=last){int middle=first+((last-first)>>1);if(num[middle]==searchValue)return middle+1;if(num[middle]>searchValue)binarySearch(num,0,middle-1,searchValue);if(num[middle]<searchValue)binarySearch(num,middle+1,last,searchValue);}else  return -1;}int main(){int num[5]={1,2,3,4,5};int index=binarySearch(num,0,4,2);if(index==-1){cout<<"Not Find!"<<endl;}else{cout<<index<<endl;}return 0;}


0 0
原创粉丝点击