2--判断该数组中是否存在这个整数

  1 #include <stdio.h>
  2 
  3 /*
  4 题目:在二维数组中,每一行从左到右,递增;
  5 每一列从上到下递增。完成一个函数。
  6 输入一个二维数组和一个整数,判断该数组中是否存在这个整数。
  7 
  8 测试数据
  9     1    2    8    9
 10     2    4    9     12
 11     4    7    10    13
 12     6    8    11    15
 13 查找 7 是否存在其中。
 14 
 15 解题思路:
 16     从右上顶点开始于判断,与数字7做对比,看是否与7相同。如果相同就是在其中。
 17 如果不在,判断该数字是否大于要查找数字7,如果大于就证明可以去掉9所在的数字那一列。
 18 因为,数组符合水平向右不断增大,垂直向下不断增加。如果小于查找数字7,就可以舍弃水平哪一行。
 19 根据这个规则,循环查找,直到结束。
 20 --------------------
 21 第一次查找后:9 》7舍弃列
 22     1    2    8    
 23     2    4    9     
 24     4    7    10    
 25     6    8    11    
 26 
 27 --------------------
 28 
 29 --------------------
 30 第二次查找后:8 》7舍弃列
 31     1    2        
 32     2    4         
 33     4    7        
 34     6    8        
 35 
 36 --------------------
 37 --------------------
 38 第三次查找后:2 《 7 舍弃行
 39 
 40     2    4         
 41     4    7        
 42     6    8        
 43 
 44 --------------------
 45 --------------------
 46 第4次查找后:4 《 7 舍弃行
 47     
 48     4    7        
 49     6    8        
 50 
 51 --------------------
 52 --------------------
 53 第5次查找后: 7 = 7  存在
 54     
 55     4    7        
 56     6    8        
 57 
 58 --------------------
 59 
 60 */
 61 
 62 /*
 63 时间:2015-6-27
 64 name:hugo
 65 e-mail: hgonlywj@gmail.com
 66 
 67 函数功能:查找有序二维数组的元素,
 68 
 69 */
 70 
 71 int findNumFun(int *matrix, int findNum, int rows, int columns)
 72 {
 73 
 74     if (rows < 0 || columns < 0 || matrix == NULL)
 75     {
 76         return -1;
 77     }
 78 
 79     int column = columns - 1;
 80     int row = 0;
 81 
 82 
 83     while (row < rows && column > 0)
 84     {
 85         if (findNum == matrix[row * columns + column])
 86         {
 87             printf("row : %d, column: %d.\n", row, column);
 88             return 1;
 89         }
 90         else if (findNum > matrix[row * columns + column])
 91         {
 92             row++;
 93         }
 94         else
 95         {
 96             column--;
 97         }
 98 
 99     }
100     
101 
102     return 0;
103 }
104 
105 
106 int main() 
107 {
108     printf("FIndInPartiallySortedMatrix.c\n");
109 
110     int testArray[] = {1,2,8,9,2,4,9,12,4,7,10,12,6,8,11,15};
111 
112     int findNum = 10;
113 
114     findNumFun(testArray, findNum, 4, 4);
115 
116 
117     return 0;
118 }

 

posted on 2015-09-27 18:49  HGonlyWJ  阅读(349)  评论(0编辑  收藏  举报

W3C中国
阮老师的网络日志
canvas
runoob
迷渡
并发编程网
原生JS例子
前端外刊评论