您的位置:首页 > 其它

两种二分查找方式(迭代和递归),今天又被广数鄙视了,唉

2011-03-08 16:06 417 查看
#include <iostream>

using namespace std;

int binary_search(int str[], int n, int v)

{

int left = 0;

int right = n - 1;

int middle;

while (left <= right)

{

middle = (left + right)/2;

if (str[middle] > v)

{

right = middle - 1;

}

else if (str[middle] < v)

{

left = middle + 1;

}

else

return middle;

}

return -1;

}

int recursiveBinarySearch(int str[], int left, int right, int v)

{

if (left < right)

{

int middle = (left + right)/2;

if (str[middle] > v)

{

return recursiveBinarySearch(str, left, middle - 1, v);

}

else if (str[middle] < v)

{

return recursiveBinarySearch(str, middle + 1, right, v);

}

else

return middle;

}

else if (left == right)

{

if (str[left] == v)

{

return left;

}

else

return -1;

}

}

int _tmain(int argc, _TCHAR* argv[])

{

int str[10] = {1, 3, 23, 34, 45, 65, 454, 555, 666, 2323};

printf("find 34 by recursiveBinarySearch: %d/n", recursiveBinarySearch(str, 0, 9, 343));

getchar();

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: