/**//* * 二分查找法 * */
#include <iostream> #include <windows.h>
using namespace std;
int count = 0; /**//* 输入开始和长度,与长度除以2的元素对比,如果大于则将长度除以2的元素为开始,长度为 原长度除以2 如果长度等于0,或者找到元素则返回;要注意在递归过程中 不要单独使用一个一个的if 最好是 if else */ int half(int begin[],int icount,int value);
int main() { cout << "Hello world!" << endl; int array[100]; for (int i = 0;i < 100;i++) { array[i] = i+100; cout <<"array["<<i<<"] = "<<array[i] <<endl; } int result; result = half(array,100,99); cout<< "result = " <<result <<endl; system("pause"); return 0; }
int half(int begin[],int icount,int value) { count++; cout<< "count : " <<count<<endl; /**//* if (value == *begin) { return *begin; } */ if (value == begin[icount]) { return begin[icount]; } else if (icount == 0) { return -1; } else if (value == begin[icount / 2]) { return begin[icount / 2]; } else if (value < begin[icount / 2]) { half(begin,icount / 2,value); } else if (value > begin[icount / 2]) { half(&begin[icount / 2],icount / 2,value); } }
|