摘要:
题目:已知一个二维数组A[n][n],其中每行的元素按从小到大的顺序排好,每列的元素也按从小到大的顺序排好,问给定一个元素v,是否在数组中存在?方案一:暴力方法。逐个遍历进行比较。时间复杂度为O(n^2)方案二:对上面的方法进行改进,因为每行是有序的,对每行进行二分查找,共n行。时间复杂度为O(nlogn)分析:上述两个方案对规模较小的数组表现的性能比较好,并且有很好的可读性。 但方案一没有利用有序的条件,而方案二只是利用了行有序的条件,没有利用列有序的条件。方案三:从矩阵的右上角开始,即i=0, j=n-1开始遍历。若是小则向左,若是大则向下。边界条件是jn-1。时间复杂度为O(n)代码:w 阅读全文