从左下角搜索到右上角(反过来也可以,原理一样)。因为数组从上到下、从左到右是有序的,所以如果当前查找的数大于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;
}