生无涯

吾生也有涯,而知也无涯,以无涯随有涯,乐以忘忧,生亦无涯矣www.cnblogs.com/shengwuya
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

a program a day 19(ds,binary search)

Posted on 2010-10-15 23:57  生无涯  阅读(162)  评论(0编辑  收藏  举报

/**
*折半查找:适用于关键字有序的顺序表的查找
**/
#include<stdio.h>
int binarySearch(int a[],int n, int key)
{
 int low = 0,high = n - 1;
 while(low <= high)
 {
  int mid = (low + high)/2;
  if(a[mid] == key)
   return mid;
  if(a[mid] < key)
   low = mid + 1;
  if(a[mid] > key)
   high = mid - 1;
 }
 return -1;
}
int main()
{
 int a[10] = {2,3,5,7,8,10,12,15,19,21};
 int n;
 printf("the content of array a is :\n");
 for(int i = 0;i < 10;i++)
 {
  printf("%d ",a[i]);
 }
 printf("please input the number you want to search:\n");
 scanf("%d",&n);
 int addr = binarySearch(a,10,n);
 if(-1 != addr)
  printf("%d is at %dth of array a\n",n,addr);
 else
  printf("no this number!\n");
 return 0;
}