设为首页 加入收藏

TOP

折半查询(二分搜寻法)(二)
2013-12-13 18:04:54 来源: 作者: 【 】 浏览:623
Tags:查询 二分 搜寻

 

  quicksort(number, 0, MAX-1);

  printf("数列:");

  for(i = 0; i < MAX; i++)

  printf("%d ", number[i]);

  printf("\n输入寻找对象:");

  scanf("%d", &find);

  if((i = bisearch(number, find)) >= 0)

  printf("找到数字于索引 %d ", i);

  else

  printf("\n找不到指定数");

  printf("\n");

  return 0;

  }

  int bisearch(int number[], int find) {

  int low, mid, upper;

  low = 0;

  upper = MAX - 1;

  while(low <= upper) {

  mid = (low+upper) / 2;

  if(number[mid] < find)

  low = mid+1;

  else if(number[mid] > find)

  upper = mid - 1;

  else

  return mid;

  }

  return -1;

  }

  void quicksort(int number[], int left, int right) {

  int i, j, k, s;

  if(left < right) {

  s = number[(left+right)/2];

  i = left - 1;

  j = right + 1;

  while(1) {

  while(number[++i] < s) ;  // 向右找

  while(number[--j] > s) ;  // 向左找

  if(i >= j)

  break;

  SWAP(number[i], number[j]);

  }

  quicksort(number, left, i-1);   // 对左边进行递回

  quicksort(number, j+1, right);  // 对右边进行递回

  }

  }

      

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇N个数字中两个数的最大公约数 下一篇中国剩余定理

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: