二分查找基础算法总结
2022/1/12 20:35:55
本文主要是介绍二分查找基础算法总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
二分区间
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<iostream> 2 #include<algorithm> 3 #include<cmath> 4 #include<math.h> 5 using namespace std; 6 int a[1000010], n,m; 7 int main() 8 { 9 cin >> n>>m; 10 for (int i = 1; i <= n; i++) 11 cin >> a[i]; 12 while (m--) 13 { 14 int q, l = 1, r = n; 15 cin >> q; 16 while (l < r) 17 { 18 int mid = (l + r) >> 1; 19 if (a[mid] >= q) r = mid; 20 else l = mid + 1; 21 } 22 if (a[l] != q) 23 { 24 cout << "-1 -1" << endl; 25 continue; 26 } 27 else 28 { 29 cout << l - 1<<" "; 30 } 31 32 l = 1, r = n; 33 while (l < r) 34 { 35 int mid = (l + r + 1) >> 1; 36 if (q >= a[mid]) l = mid ; 37 else 38 { 39 r = mid - 1; 40 } 41 } 42 cout << l - 1 << endl; 43 } 44 return 0; 45 }View Code
浮点数二分
求数的三次方根
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<iostream> 2 #include<algorithm> 3 #include<cmath> 4 #include<math.h> 5 using namespace std; 6 int a[1000010], m; 7 int main() 8 { 9 double n; 10 cin >> n; 11 double l = -100.00, r = 100.00; 12 while (fabs(l - r) > 1e-9) 13 { 14 double mid = (l + r) / 2.0; 15 if (mid * mid * mid >= n) r = mid; 16 else 17 { 18 l = mid; 19 } 20 } 21 printf("%.6lf", l); 22 return 0; 23 }View Code
这篇关于二分查找基础算法总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)