C++声明变量和New空间区别(二)

2013-12-12 14:46:13 · 作者: · 浏览: 303

 

  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);  // 对右边进行递回

  }

  }