数组在内存中是连续存储的,可以根据下标在O(1)时间内读写任何元素,因此时间效率是很高的。当数组作为函数的参数进行转递时,数组自动退化为同类型的指针。 1、提出问题 在一个二维数组中,每一行按从左到右递增顺序排序,每一列从上到下。编写一个函数,输入这样一个二维数组,判断数组中是否含有该整数。
2、分析问题 查找时当所选数组元素小于该数时,则查找范围在所选数的右边或下边,很明显右下的查找元素重复了。我们可选取右上角为基准点,当该数大于查找数,则可以剔除该列。当该数小于查找数时,可以剔除该行。也就是说如果该查找数不位于右上角,则每次可以删除一行或一列,直到找到待查找元素或区域为空。
3、解决问题 根据上面思路,代码如下:bool Find(int* matrix,int rows,intcolumns,int num) { boolfind=false; introw=0; intcolumn=columns-1; if(matrix!=NULL&&rows>0&&columns>0) { while(row<rows&&column>=0) { if(matrix[row*column+column]==num) { find=true; break; } else { if(matrix[row*column+column]>num) column--; else row++; } } } returnfind; }

被折叠的 条评论
为什么被折叠?



