1 递归的是神,迭代的是人
-- 迭代的折半查找 -- 递归的折半查找
2 见案例(zhebanchazhao1.cpp)
/** * 本案例演示递归的折半查找与迭代的折半查找 * */ #include <iostream> using namespace std; //
递归的折半查找 arg1:需要查找的数组  arg2:需要查找的数组中的元素 arg3 arg4:需要查找数组的两边下角标 如果10个数,则left=0
right = 9 int BinarySearch_I(int* a, const int x, const int left, const int
right); // 迭代的折半查找 int BinarySearch_R(int* a, const int x, const int n); int
main() { int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int result = BinarySearch_R(
a, 7, 10); if(result == -1) cout << "该元素不在数组内" << endl; else cout <<
"数组中的元素位于a[" << result << "]中" << endl; int result2 = BinarySearch_I(a, 6, 0, 9)
; if(result2 == -1) cout << "该元素不在数组内" << endl; else cout << "数组中的元素位于a[" <<
result2<< "]中" << endl; return 0; } // 迭代的折半查找 int BinarySearch_R(int* a, const
int x, const int n) { int left = 0, right = n - 1, middle; while(left <= right)
// 一直二分查找,如果找到,则返回元素所在数组下表 { middle = (left + right) / 2; if(x == a[middle])
return middle; else if(x > a[middle]) left = middle + 1; else if(x < a[middle])
right= middle - 1; } return -1; // 如果while循环中没有找到,则返回-1 } // 递归的折半查找 int
BinarySearch_I(int* a, const int x, const int left, const int right) { while(
left<= right) { int middle = (left + right) / 2; //折半 if(x < a[middle]) return
BinarySearch_I(a, x, left, middle -1); else if(x > a[middle]) return
BinarySearch_I(a, x, middle + 1, right); else return middle; } return -1; }

技术
©2019-2020 Toolsou All rights reserved,
王者荣耀背景故事整合痴心妄想随机森林篇 R语言实现用C++跟你聊聊“原型模式” (复制/拷贝构造函数)再见!经典版Edge!PYTHON入门期末复习汇总2021年1月程序员工资统计,平均14915元详解ubuntu14.04如何设置静态IP胡润:中国600万资产“富裕家庭”数量首次突破500万户苹果与日产对话暂停,Apple Car进展如何?