算法:判断数组中是否含有某个整数
2019-04-12 16:00:18
# 算法
题:在一个二维数组中,每一行都按照从左到右递增的顺序排列,每一列都按照从上到下递增的顺序排列。判断数组中是否含有某个整数。
分析:
二维数组。而且数组的排列顺序也给了规定:每一行都按照从左到右递增的顺序排列,每一列都按照从上到下递增的顺序排列。
思路:
二分查找方法,以及利用二维数组的排列顺序规则进行查找。
方案:
1、将二维数组转换成一维有序数组,然后通过二分法查找该有序数组找到目标数。
2、首先选取数组中右上角的数字。如果该数字等于要查找的数字,则查找过程结束;如果该数字大于要查找的数字,则剔除这个数字所在的列;如果该数字小于要查找的数字,则剔除这个数字所在的行。也就是说,如果要查找的数字不在数组的右上角,则每一次都在数组的查找范围中剔除一行或一列,这样每一步都可以缩小查找的范围,直到找到要查找的数字,或者查找范围为空。
1 | 例如: |
代码实践:
方案一:
1 | int arr[5][3]={ {5,7,10}, {10,12,23}, {21,23,36}, {33,36,37}, {42,46,49} }; |
方案二:
1 | /* |