从左下角搜索到右上角(反过来也可以,原理一样)。因为数组从上到下、从左到右是有序的,所以如果当前查找的数大于target,那么其上方的数也一定会大于target;如果当前查找的数小于target,那么其左边的数也一定会小于target。
bool Find(int target, int** array, int arrayRowLen, int* arrayColLen ) { int m = arrayRowLen - 1, n = 0; while (m >= 0 && n < *arrayColLen) { if (array[m][n] == target) return true; else if (array[m][n] > target) m--; else n++; } return false; }