4种二分查找的C++算法

来源:互联网 发布:java与传感器通信 编辑:程序博客网 时间:2024/06/06 19:05

初步实现:

#include<iostream>int _do_while(int &start, int &end, int &want){int mid;do {mid = (start + end) / 2;if (want == mid){std::cout << "\n\n用do_while循环找到这个数啦!\n";printf("%d的地址是%p\n", want, want);break;}else if (want > mid){start = mid + 1;}else{end = mid - 1;}} while (start < end);return want;}int _while(int &start, int &end, int &want){int mid;while (start < end){mid = (start + end) / 2;if (want == mid){std::cout << "\n\n用while循环找到这个数啦!\n";printf("%d的地址是%p\n", want, want);break;}else if (want > mid){start = mid + 1;}else{end = mid - 1;}}return want;}int _go_to(int &start, int &end, int &want){int mid=0;Loop:if (want != mid){mid = (start + end) / 2;if (want > mid)start = mid + 1;else end = mid - 1;goto Loop;} std::cout << "\n\n用goto循环找到这个数啦!\n"; printf("%d的地址是%p\n", want, want); return want;}int 递归(int &start, int &end, int &want){if (start < end){int mid = (start + end) / 2;if (want == mid) {std::cout << "\n\n用递归循环找到这个数啦!\n";printf("%d的地址是%p\n", want, want);}else {if (want > mid) { start = mid + 1; 递归(start, end, want); }else { end = mid - 1; 递归(start, end, want); }}return want;}return want;}int main(){int 开始 = 0, 末尾 = 1024*10^10,查找=99;std::cout << "二分查找程序:\n请输入要查找的数组下限和上限:\n";std::cin >> 开始 >> 末尾;std::cout << "请输入要查找的数:";std::cin >> 查找; std::cout << std::endl;_while(开始, 末尾, 查找);_do_while(开始, 末尾, 查找);递归(开始, 末尾, 查找);//Recursion_go_to(开始, 末尾, 查找);system("pause");return 0;}

运行结果:



原创粉丝点击