定义一个有100个整型元素的一维数组,随机生成100个数,用二分查找一个给定的数。

思路:1.播放随机种子,随机生成100个整形数,并把这些元素放入容器v中

   2.对容器的元素进行排序,因为能用二分的前提是有序的

   3.利用二分查找进行查找,找到返回1,找不到返回-1.

 1 #include<iostream>
 2 #include <vector>
 3 #include <algorithm>
 4 
 5 using namespace std;
 6 
 7 //用二分查找,给定一个数字,找到返回1,找不到返回-1;
 8 int binarySearch(vector<int>v, int target)
 9 {
10     int l = 0, r = v.size() - 1;
11     while (l <= r)  //注意判别条件是l <= r,因为当l==r的时候,查找区间为最后一个元素
12     {
13         int mid = (r + l) / 2;
14         if (v[mid] == target)
15         {
16             return 1;
17         }
18         else if (v[mid] > target)
19         {
20             r = mid - 1;
21         }
22         else
23         {
24             l = mid + 1;
25         }
26     }
27     return -1;
28 }
29 
30 int main()
31 {
32     vector<int>v;
33     srand(time(NULL));//播放随机种子
34     for (int i = 0; i < 100; i++)
35     {
36         int a = rand() % 100;
37         v.push_back(a);  //生成的100个元素放到容器v中。
38     }
39     //二分的前提是有序
40     sort(v.begin(), v.end());
41     for (auto x : v)
42     {
43         cout << x << " ";
44     }
45     cout << endl;
46 
47     int target = 0;
48     cout << "请输入要查找的数字:" << endl;
49     while (cin >> target)
50     {
51         int res = binarySearch(v, target);
52         cout << res << endl;
53     }
54     return 0;
55 }

 

posted @ 2023-08-10 17:56  潘阳399  阅读(81)  评论(0编辑  收藏  举报