数据结构算法设计,多谢您的回答!!

来源:百度知道 编辑:UC知道 时间:2024/05/17 08:46:37
给定整型数组B[m][n],已知B中数据在每一维方向都按从小到大的顺序排列。设计算法,找出一对满足B[i][j]=x的i和j值,要求比较次数不过m+n次。

运用二分查找,比较次数小于mlog2n,肯定小于m+n

#include <stdio.h>

#define Size 1000

int b[ Size ][ Size ], m, n;

int find( int a[ ], int left, int right, int x )
{
      int mid = ( left + right ) >> 1;
      if ( a[ mid ] == x )
            return mid;
      if ( left == right )
            return -1;
      if ( a[ mid ] > x )
            return find( a, left, mid, x );
      return find( a, mid + 1, right, x );
}

void init( )
{
      int i, j;
      printf("Please input m, n :");
      scanf("%d%d", &m, &n);