开始学数据结构——(五):二分查找 ,非递归

/*二分查找法  非递归样式。
    思路和递归的是一样的,往中间的值比较,然后大于或者小于都除掉了中间那个数-1 或者+1后再继续查找!
SQ 2014-04-15
*/
#include
int aa[]= {0,1,2,3,4,5,6,7,8,9,10,13,15,17,19,21,23,25};
int main()
{
int m=0;
int n;
int bb[20]={0};
 for(m=0 ; m < 16 ; m++)
     printf(" =%d= " , aa[m]);
     n =find(0,16,17);   //17为你要寻找的数
     printf("what the data you want to is %d and is locate at %d\n",aa[n] ,n );
return 0;
}

int find(int start ,int end ,int m){
    int mid;
    while(start < end) {  //唯一和递归不一样的在这里!
        mid = (end + start) / 2;
    if ( m         end = mid -1;        
    else if (m > aa[mid])
        start = mid +1;    
        else
            return mid;
    }

}


你可能感兴趣的:(数据结构)