二维数组作为参数传递
l 二维数组题的思维收获
这个算法跟数据结构没关系,主要是逻辑思维看图思考利用的是数据之间的关系;多多举例具体化尝试,把复杂的问题具体化,分析那种情况,时间复杂度低。先有思路,再写代码。代码贴近自己的思维。
l 二维数组处理的代码收获
在c++中将二维数组当作参数的时候,必须指明所有维数大小或者省略第一维。但是我们在写程序的时候经常会遇到各个维数都不固定的情况,我们完全可以不把它当作一个二维数组,而是把它当作一个普通的指针,在另外加上两个参数指明各个维数,然后我们为二维数组手工寻址,这样就达到了将二维数组作为参数传递的目的
#include <iostream> using namespace std; //int * matrix 与 int matrix[][]在传递参数时候的区别; //有时候递归反而把简单问题复杂了; //有时候我们写代码定义变量的时候要贴近思维,也要注意代码速度; int Find(int * matrix,int rows,int columns,int number) { int row = 0, column = columns - 1; while(column>=0 && row<rows) { if(*(matrix+row*columns+column) == number ) { cout<<*(matrix+row*columns+column)<<"找到" <<endl; return 1; } if(*(matrix+row*columns+column) < number ) //除了有return外 一定要注意if else 的匹配 { cout<<*(matrix+row*columns+column)<<"小了" <<endl; row++; }else { cout<<*(matrix+row*columns+column)<<"大了" <<endl; column--; } } return 0; } int main() { int data[4][4]= { 1, 2, 8, 9, 2, 4, 9, 12, 4, 7, 10, 13, 6, 8, 11, 15 }; int num[4][5] { 1, 2, 8, 9, 10, 2, 4, 9, 12, 13, 4, 7, 10, 13, 14, 6, 8, 11, 15, 16 }; cout<<Find(&(data[0][0]),4,4,0)<<endl; cout<<Find(&(num[0][0]),4,5,17)<<endl; }
作者:在河之博
出处:http://www.cnblogs.com/dragonfive/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。