zoukankan      html  css  js  c++  java
  • 二维数组查找

     1.int a; int*a; int **a; int (*a)[10]; int (*a) (int)的区别。

     a) int a 表示一个内存空间,这个空间用来存放一个整数。

     b) int *a指向一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放整数的空间,即a)中提到的空间。

     c) int **a表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放指针的空间,并且指向的这个空间中的指针,指向一个整数。指向了一个b)中提到的空间。

    d) int(*a)[10]表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个长度为10,类型为int的数组;与int **a的差别主要体现在a++上。

    e) int (*a) (int)表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个函数,这个函数有一个int型的参数,并且函数的放回类型也是int。

    2.当声明一个数组时,数组的名字也是一个指针。32位系统上,对任意指针求sizeof,得到的结果都是4. 当数组作为函数参数进行传递时,数组自动退化为同类型的指针。

    3.例题:二维数组中的查找。

    二维数组的每一行是按从左到右递增以及从上到下递增来排序的,判断数组中是否含有一个整数。

    解决思想:找到最右边的列的第一个数,如果比要寻找的数大,则该列都不用再考虑,如果比要寻找的数小,则该行都不用再考虑。递归求解。

    #include<iostream>
    using namespace std;
    
    int findnumber(const int* array,int number,int &nrows,int &ncols,const int rows,const int cols)     //int ** array并不能把整个数组传进去,因为不知道每一行有几个元素
    {
    
        if(nrows==0||ncols==0)
            return 0;
        else if(*(array+(rows-nrows)*cols+ncols-1)==number)
            return 1;
        else if(*(array+(rows-nrows)*cols+ncols-1)>number)
        {
            ncols-=1;
            findnumber(array,number,nrows,ncols,rows,cols);
        }
        else if(*(array+(rows-nrows)*cols+ncols-1)<number)
        {
            nrows-=1;
            findnumber(array,number,nrows,ncols,rows,cols);
        }
    }
    
    int main()     //main()函数只能返回int,不能返回bool
    {
        int array[4][4]={{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}};  
        int rows=4;
        int cols=4;
        int nrows=rows;
        int ncols=cols;
        int number=7;
        cout<<findnumber(array[0],number,nrows,ncols,rows,cols);
    }
  • 相关阅读:
    冒泡排序与选择排序
    SVN-cheanup反复操作失败的问题。
    js区分汉字和字符,校验长度
    maven的安装与使用
    java获取登陆用户的IP地址
    kafka创建topics 错误: 找不到或无法加载主类 FilesJavajdk1.7.0_80lib;C:Program
    SOAPwebservice 与Restfull webservice之间的区别
    CAD数据导入Arcgis10.1的依赖关系
    wpf之StackPanel、WrapPanel、WrapPanel之间的关系
    浅谈修饰符
  • 原文地址:https://www.cnblogs.com/wy1290939507/p/4561294.html
Copyright © 2011-2022 走看看