二维数组查找(普通数组&vector数组)

    xiaoxiao2021-04-12  30

    题目描述:

    分析方法: 选取右上角的数字9。开始遍历,目标数字比所遍历的小,就往左走;目标数字比所遍历的大,就往下走;

    如果目标数据跟所遍历到的数据相等就说明找到了。

    代码:

    【写代码的时候突然发现自己不会二维数组传参了.......kepa 就写个小小程序测试了一下】

    测试二维数组传参的!!!

    #include<iostream> using namespace std; void fun(int x[][3]) { int i, j; for (i = 0; i < 2; i++) { for (j = 0; j < 3; j++) { cout<< x[i][j]; } cout<<endl; } } int main() { int a[2][3] = {1, 2, 3, 4, 5, 6}; fun(a); return 0; }

    普通数组的做法:

    #include<iostream> using namespace std; bool Find_num(int *matrix , int rows, int colums,int number) { bool find = false; if(matrix != NULL && rows > 0 && colums > 0) { int row = 0; int colum = colums - 1; while(row < rows && colum >= 0) { if(matrix[row*colums+colum] == number) //觉得特别好的一种方法 { find = true; break; } else if(matrix[row * colums + colum] > number) -- colum; else ++row; } } return find; } int main() { int numBoard[4][4]= {1,2,8,9,2,4,9,12,4,7,10,13,6,8,11,15}; int find_num; cin>>find_num; if(Find_num((int*)numBoard,4,4,find_num)) //这种强转的操作二维数组也可以 cout<<"find it"<<endl; else cout<<"sorry "<<endl; } vector数组的做法:

    {从左下角开始的}

    #include<iostream> #include<vector> using namespace std; void print(vector<vector<int> > array) { for(int i = 0;i < array.size();++i) { for(int j = 0;j < array[0].size();++j) { cout<<array[i][j]<<" "; } cout<<endl; } } bool _Find(int target, vector<vector<int> > array) { int row_star,colum_star,row_end,colum_end; bool find = false; /*从左下角开始*/ row_star = array.size()-1;//行 colum_star = 0;//列 row_end = 0; colum_end = array[0].size()-1; int i = row_star; int j = colum_star; while((i>=row_end)&&(j<colum_end)) { if(target > array[i][j]) --i; if(target < array[i][j]) ++j; if(target == array[i][j]) { find = true; break; } } return find; } int main() { int count = 0; int target; vector<vector<int> > array(3); for(int i=0;i<3;++i) { array[i].resize(3); } for(int k=0;k<3;++k) { for(int j=0;j<3;++j) { array[k][j] = ++count; } } print(array); cin>>target; bool m = _Find(target, array); if(m) { cout<<"find it"<<endl; } else { cout<<"sorry "<<endl; } return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-668240.html

    最新回复(0)