public boolean search(int[][] matrix, int rowStart, int rowEnd,
			int colStart, int colEnd, int target) {
		if (rowStart > rowEnd || colStart > colEnd) {
			return false;
		}
		int m = (rowStart+rowEnd)/2;
		int n = (colStart+colEnd)/2;
		if (matrix[m][n]==target) {
			return true;
		}else if (matrix[m][n]>target) {
			return search(matrix, rowStart, m - 1, colStart, n - 1, target)
					|| search(matrix, rowStart, m - 1, n, colEnd, target)
					|| search(matrix, m, rowEnd, colStart, n - 1, target);
		}else{
			return search(matrix, rowStart, m, n + 1, colEnd, target)
					|| search(matrix, m + 1, rowEnd, colStart, n, target)
					|| search(matrix, m, rowEnd, n + 1, colEnd, target);
		}
	}