下面是最优算法:
记矩阵的右上角(左下角也可以)元素为a,搜索起点设置为a,要查找的元素为k:
若a>k,则a所在列的所有元素均大于k,搜索位置左移1位,然后删除该列构成新的矩阵;
若a<k,则a所在行的所有元素均小于k,搜索位置下移1位,然后删除该行构成新的矩阵;
若相等,结束查找;
由新构成的矩阵利用上述方式继续查找(递归调用)。
该最优算法的最坏情况也就是说从右上角开始搜索直到左下角结束,每次向左或向下一步,共需要m+n步到达左下角
记矩阵的右上角(左下角也可以)元素为a,搜索起点设置为a,要查找的元素为k:
若a>k,则a所在列的所有元素均大于k,搜索位置左移1位,然后删除该列构成新的矩阵;
若a<k,则a所在行的所有元素均小于k,搜索位置下移1位,然后删除该行构成新的矩阵;
若相等,结束查找;
由新构成的矩阵利用上述方式继续查找(递归调用)。
该最优算法的最坏情况也就是说从右上角开始搜索直到左下角结束,每次向左或向下一步,共需要m+n步到达左下角