二维数组中的查找

题目描述:

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

多维数组只是一个逻辑上的概念,内存实质上都是按一维数组存储,对数组排序,然后二分查找。

 1 #include<stdio.h>
 2 int binary_search(int* a,int low,int high,int x)
 3 {
 4 int mid=0;
 5 while(low<=high)
 6     {
 7         mid=(high+low)/2;
 8         if(x==a[mid])
 9         {
10             return 1;
11         }
12         else
13             if(x<a[mid])
14             {
15                 high=mid-1;
16             }
17             else
18             {
19             low=mid+1;
20             }
21     }
22     return 0;
23 }
24 
25 int main()
26 {
27 int a[10000];
28 int m,n;
29 int target;
30 while(scanf("%d%d",&m,&n)!=EOF)
31 {    
32     scanf("%d",&target);
33     for(int i=0;i<m;i++)
34         for(int j=0;j<n;j++)
35         {
36             scanf("d",&a[i*n+j]);
37         }
38     if(binary_search(a,0,n*m-1,target)
39     {    
40         printf("Yes/n");
41     }
42     else
43     {
44         printf("No\n");
45     }
46 }
47 return 0;
48 }
49   
50             
51         
52                 

 

 

posted on 2013-07-18 16:52  听雪同学  阅读(148)  评论(0)    收藏  举报

导航