1 #include "stdafx.h"
 2 #include <iostream>
 3 using namespace std;
   //折半查找(非递归调用)
 6 bool binarySearch(int *arr,int low,int high,int key)
 7 {
 8     while (low<=high) {//必须为有=
 9         int mid = (low + high) / 2;
10         if (arr[mid] > key) {
11             high = mid - 1;
12         }
13         else if (arr[mid]<key) {
14             low = mid + 1;
15         }
16         else {
17             return true;
18         }
19     }
20     return false;
21 }
23 //折半查找递归调用
24 bool binarySearch(int *arr,int low,int high,int key)
25 {
26     if (low>high) {  //递归退出条件
27         return false;
28     }
29     int mid = (low + high) / 2;
30     if (arr[mid]>key) {
31         return binarySearch(arr,low,mid-1,key);
32     }
33     else if(arr[mid]<key){
34         return binarySearch(arr,mid+1,high,key);
35     }
36     else {
37         return true;
38     }
39 }
40 
41 //
42 int main()
43 {
44     int arr[10] = {0,1,2,3,4,5,6,7,8,9};
45     int key;//要查找的值
46     cin >> key;
47     bool flag=binarySearch(arr,0,9,key);
48     if (flag) {
49         cout << "查找成功!" << endl;
50     }
51     else {
52         cout << "查找失败!" << endl;
53     }
54     return 0;
55 }

 

posted on 2016-08-17 22:12  Love63  阅读(473)  评论(0编辑  收藏  举报