首页 > 编程语言 > 详细

BinarySearch,逆序排列的数组的二分查找,折半查找,C++实现

时间:2020-09-13 09:25:05      阅读:76      评论:0      收藏:0      [点我收藏+]
 1 // To Compile and Run: g++ binary_search.cc -std=c++11 -Wall -O3 && ./a.out 8
 2 
 3 
 4 #include <stdlib.h>
 5 #include <assert.h>
 6 
 7 #include <iostream>
 8 #include <vector>
 9 
10 
11 int BinarySearch(const std::vector<int> &inArr, int target) {
12     int left = 0;
13     int right = inArr.size() - 1;
14 
15     while (true) {
16         if (left > right) {
17             std::cout << "Failed to find: " << target << "\n";
18             return -1;
19         }
20 
21         int mid = left + (right - left) / 2;
22         if (target == inArr[mid]) {
23             return mid;
24         }
25 
26         if (target > inArr[mid]) {
27             right = mid - 1;
28         }
29         // target < inArr[mid]
30         else {
31             left = mid + 1;
32         }
33     }
34 
35     std::cerr << "Could never reach here.\n";
36     return -1;
37 }
38 
39 int main(int argc, char const *argv[]) {
40     const std::vector<int> arr {
41         8, 7, 4, 3, -5, -9
42     };
43     assert(argc >= 2);
44     int target = atoi(argv[1]);
45 
46     int indexOfTarget = BinarySearch(arr, target);
47     if (indexOfTarget < 0) {
48         std::cout << "Failed to find: " << target << "\n";
49         return -1;
50     }
51     std::cout << "Find: " << target << " in " << indexOfTarget << "\n";
52 
53     return 0;
54 }

    对于顺序排列的数组,只修改26行的符号就行了。

 

BinarySearch,逆序排列的数组的二分查找,折半查找,C++实现

原文:https://www.cnblogs.com/xiaochou/p/13659445.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!