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

来源:互联网 发布:淘宝哪家店女装时尚 编辑:程序博客网 时间:2024/05/17 04:16
#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;}
阅读全文
0 0
原创粉丝点击