您的位置:首页 > 其它

二分查找非递归与递归实现

2017-05-17 17:53 253 查看
#include <stdio.h>
int  BinSearch(int *str, int sz, int key)   //非递归
{

int left = 0;
int right = sz-1;
int mid;
while (left <= right)
{
mid = (left + right) / 2;
if (key < str[mid])
{
right = mid-1;

}
if (key > str[mid])
{
left = mid+1;

}
if (key == str[mid])
return str[mid];

}
printf("no this key\n");
return 0;
}

//int BinSearch(int *str, int left,int right ,int key)//mid的作用域
//{
//  if (left <= right)
//  {
//      int mid = (left + right) / 2;
//      if (key == str[mid])
//          return str[mid];
//      if (key < str[mid])
//          return BinSearch(str,left,mid-1,key);
//      if (key > str[mid])
//          return BinSearch(str,mid+1,right,key);
//     }
//  printf("No  this key\n");
//  return 0;
//
//}
int main()
{
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
int sz = sizeof(arr) / sizeof arr[0];
int p = BinSearch(arr, 0,sz-1, 10);
printf("%d\n", p);

return 0;

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