2

数据量比较大时,如果需要查找数据,可以使用二分法

可以提高效率

例题

 

 源代码

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 using namespace std;
 5 int n, k, a[100005], b[100005], shu, s1, s2, gs, to;
 6 int main()
 7 {
 8     scanf("%d%d", &n, &k);//n个人获得科技创新奖,m个人获得特殊贡献奖
 9     for (int i = 1; i <= n; i++)scanf("%d", &a[i]);//科技创新奖的人的编号
10     for (int i = 1; i <= k; i++)scanf("%d", &b[i]);//特殊贡献奖的人的编号
11     sort(b + 1, b + 1 + k);//用特殊贡献奖的人的编号排序
12     for (int i = 1; i <= n; i++)//用科技创新奖的人的编号去寻找特殊贡献奖的人的编号有无相同
13     {
14         int low = 1, high = k;
15         while (low <= high)//二分,看看有无相同
16         {
17             int mid = (low + high) / 2;//中间值
18             if (b[mid] == a[i])//有无相同?
19             {
20                 cout << a[i] << " ";
21                 break;
22             }
23             else if (b[mid] < a[i])low = mid + 1;//在右区间找
24             else high = mid - 1;//在左区间找
25             }
26         }
27         return 0;
28     }

感悟:要处理的数据量比较大,同时需要进行查找等操作,用二分效率比较高

(二分的代码)!!!!!!!!!!!!!!!

 

posted @ 2024-02-18 20:09  连师傅只会helloword  阅读(3)  评论(0编辑  收藏  举报