剑指offer--面试题4:二维数组中的查找

来源:互联网 发布:java的封装性是通过 编辑:程序博客网 时间:2024/06/14 19:59


#include <stdio.h>bool Find(int *matrix, int row, int col, int number)  {bool found = false;     if(matrix == NULL && row <= 0 && col <=0 ) found=false; for(int i=0,j=col-1;found==false && i <= row-1 && j>=0;) //取右上角位置; 停止条件:行加到满i-->row,列减到j-->0。  {if(matrix[i*col+j] == number)    //如果右上角位置元素==key, 找到,标记为true  found=true;  else if(matrix[i*col+j] > number)//如果右上角元素>key,则该列全部大于key    去掉该列  --j; else                              //如果右上角元素<key,则该行全部小于key   去掉该行  ++i;}        return found;}int main(){int a;      int arr[4][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19 };      printf("数组为:\n");     for (int i = 0; i < 4; i++)      //打印原来数组     {          for (int j = 0; j < 4; j++)              printf("%3d", arr[i][j]);          printf("\n");      } printf("请输入一个数:");  scanf("%d", &a);  if (Find((int *)arr,4,4, a))  printf("  %d在该矩阵中\n", a);  else      printf("  %d不在该矩阵中\n", a);        return 0;}



1 0
原创粉丝点击