二维数组中的查找
- 题目描述:
-
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
多维数组只是一个逻辑上的概念,内存实质上都是按一维数组存储,对数组排序,然后二分查找。
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
浙公网安备 33010602011771号