2011年10月15日 星期六

C 二分搜尋法練習(Binary Search)

#include <stdio.h>
#include <stdlib.h>

//compare to sequential search, binary search data      must have been sorted!  

int bin_search(int number,int *number_data,int index)
{
  int low =0;
  int upper = index;
  int middle;

  while(low <= upper)
  {
    middle =(low+upper)/2 ;
    printf("low = %d\t",low);
    printf("middel = %d \n",middle);       
    if(number == number_data[middle])  
       return middle ;
    else
    {
     if(number > number_data[middle])
        low = middle + 1;
     else
        upper = middle - 1;  
    }     
  }
  return -1;    
}


int main()
{
  int number;
  int rval = 0;
  int number_data[]={11,22,33,44,55,66};
  printf("please input a number :\t");
  scanf("%d",&number);
  rval = bin_search(number,number_data,6);
  if(rval == -1)
    printf("Not Find Number\n ");  
  else
    printf("Find Number %d at position %d \n", number,(rval+1));       
 
  system("pause");
 
}

沒有留言:

張貼留言