精华内容
下载资源
问答
  • 正确答案: A C D 你的答案: C D (错误) C++中数组的存储方式为列优先存储 数组名可以作为实参赋值给指针类型的形参 数组下标索引从1开始,至数组长度n结束 数组指针的语法形式:类型名 *数组名[下标表达式] 二维...

    正确答案: A C D 你的答案: C D (错误)

    • C++中数组的存储方式为列优先存储
    • 数组名可以作为实参赋值给指针类型的形参
    • 数组下标索引从1开始,至数组长度n结束
    • 数组指针的语法形式:类型名 *数组名[下标表达式]

    二维数组是按行优先存储的
    也就是说,在内存中存储一个二维数组时,先把数组中第一行的元素存完,再接着存下一行的元素,直到存完为止。
    ps:int a[m][n] 为m行n列的矩阵,在内存中是这样顺序存的:a[0][0] a[0][1] … a[0][n-1] a[1][0] a[1][1]…

    展开全文
  • 下列关于链表和数组的比较,错误的是? A.当读操作多于插入操作时,数组更好 B.链表的修改操作慢于数组 C.当插入大于写操作时,数组更好 D.链表查询操作慢于数组 答案:C 链表和数组的比较如下: 参数 链表 数组...

    下列关于链表和数组的比较,错误的是?

    A.当读操作多于插入操作时,数组更好
    B.链表的修改操作慢于数组
    C.当插入大于写操作时,数组更好
    D.链表查询操作慢于数组

    答案:C

    链表和数组的比较如下:

    参数链表数组
    索引O(n)O(1)
    在最前端插入/删除O(1)O(n)如果数组空间末填满,需要移动元素
    在最末端插入O(n)O(1)
    在最末端删除O(n)O(1)如果数组空间末填满,需要移动元素
    在中间删除O(n)O(n)如果数组空间末填满,需要移动元素
    在中间插入O(n)O(n)如果数组空间末填满,需要移动元素
    展开全文
  • 1. 多维数组的切片 定义Numpy的一个多维数组 import numpy as np ArrOne = np.arange(20).reshape(4,5) # np.arange(20),生成0-19,20长一维向量,通过reshape变成4*5的二维数组 print("ArrOne ->> ", '\n', ...

    1. 多维数组的切片

    定义Numpy的一个多维数组

    import numpy as np
    ArrOne = np.arange(20).reshape(4,5)
    # np.arange(20),生成0-19,20长一维向量,通过reshape变成4*5的二维数组
    print("ArrOne ->> ", '\n', ArrOne)
    print("ArrOne的维度 ->> " , ArrOne.shape)
    

    输出如下:
    在这里插入图片描述
    假如我们要取出红框中的元素
    在这里插入图片描述
    红框中的数据是矩阵ArrOne第2,3行与第2,3,4列包围的数据.,使用两种方法取出数据:

    RedBoxArr_1 = ArrOne[1:3, 1: 4]
    RedBoxArr_2 = ArrOne[1: 3, :][:, 1: 4] #前一个冒号可以省略,后一个不能
    print("RedBoxArr_1 ->> ", '\n', RedBoxArr_1)
    print('ArrOne[1: 3]','\n', ArrOne[1: 3])
    print("RedBoxArr_2 ->> ", '\n', RedBoxArr_2)
    ## RedBoxArr_2等价于:
    ## a = ArrOne[1: 3]
    ## RedboxArr_2 = a[1: 4]
    

    输出如下
    在这里插入图片描述
    可以看到用这两种方法都可以实现多维数组的切片。

    2. 注意事项

    要注意:从多维数组中取出某一列,造成的维度变化
    在这里插入图片描述
    如要取出ArrOne第2行的元素,代码阐述:

    GreeBoxArr_1 = ArrOne[1]
    GreeBoxArr_2 = ArrOne[1:2]
    # 我们看看有什么区别
    print('GreeBoxArr_1', '\n', GreeBoxArr_1, '\n')
    print('GreeBoxArr_2','\n',  GreeBoxArr_2, '\n')
    print('GreeBoxArr_1\'s shape', '\n', GreeBoxArr_1.shape, '\n')
    print('GreeBoxArr_2','\n',  GreeBoxArr_2.shape, '\n')
    

    输出结果如下:
    在这里插入图片描述
    我们看到这两种方式都取出了ArrOne第2行的元素。但是用第一种取出的只有一个维度。而用第二种方法取出的有两个维度。在进行矩阵运算时一定要注意这两者取值的差异。
    结论:Arr[1:2],Arr[:, 1:2]等方式切片能够保持矩阵维度在2维(取决Arr本身的维度),而用Arr[1], Arr[:, 1]方式切片不能够维持原本的矩阵维度。
    计算demo:

    ArrTwo = np.arange(5).reshape(5, 1)
    ArrThree = np.arange(5).reshape(1, 5)
    ResultOfGreeBox1_1 = np.matmul(ArrTwo, GreeBoxArr_1)
    ResultOfGreeBox1_2 = np.matmul(ArrThree, GreeBoxArr_1)
    ResultOfGreeBox2_1 = np.matmul(ArrTwo, GreeBoxArr_2)
    ResultOfGreeBox2_2 = np.matmul(ArrThree, GreeBoxArr_2)
    print('ResultOfGreeBox1_1', '\n', ResultOfGreeBox1_1, '\n')
    print('ResultOfGreeBox1_2','\n',  ResultOfGreeBox1_2, '\n')
    print('ResultOfGreeBox2_1', '\n', ResultOfGreeBox2_1, '\n')
    print('ResultOfGreeBox2_2','\n',  ResultOfGreeBox2_2, '\n')
    

    可以看到ResultOfGreeBox1_1出现了维度异常错误
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • java面试题24 关于Java中的数组,下面的一些描述,哪些描述是准确的:() A 数组是一个对象,不同类型的数组具有不同的类 B 数组长度是可以动态调整的 C 数组是一个连续的存储结构 D:一个固定长度的数组可...

    java面试题24 关于Java中的数组,下面的一些描述,哪些描述是准确的:(        )

    A 数组是一个对象,不同类型的数组具有不同的类
    B 数组长度是可以动态调整的
    C 数组是一个连续的存储结构
    D:一个固定长度的数组可类似这样定义: int array[100]
    E:两个数组用equals方法比较时,会逐个便利其中的元素,对每个元素进行比较
    F可以二维数组,且可以有多维数组,都是在Java中合法的

    懵逼树上懵逼果,懵逼树前你和我

     

    数组的基本概念

    如果说现在要求你定义100个整型变量,那么如果按照之前的做法,可能现在定义的的结构如下:

    int i1, i2, i3, ... i100;

    但是这个时候如果按照此类方式定义就会非常麻烦,因为这些变量彼此之间没有任何的关联,也就是说如果现在突然再有一个要求,要求你输出这100个变量的内容,意味着你要编写System.out.println()语句100次。

    其实所谓的数组指的就是一组相关类型的变量集合,并且这些变量可以按照统一的方式进行操作。数组本身属于引用数据类型,那么既然是引用数据类型,这里面实际又会牵扯到内存分配,而数组的定义语法有如下两类。

        数组动态初始化:
            声明并开辟数组:
                数据类型 [] 数组名称 = new 数据类型[长度];
                数据类型 [] 数组名称 = new 数据类型[长度];
            分布进行数组空间开辟(实例化)
            | Tables | Are |
            | ------------- |:-------------?
            | 声明数组: | 数组类型 数组名称[] = null; | | | 数组类型 [] 数组名称 =null; | | 开辟数组空间: | 数组名称 =new` 数组类型[长度]; |

    那么当数组开辟空间之后,就可以采用如下的方式的操作:

        数组的访问通过索引完成,即:“数组名称[索引]”,但是需要注意的是,数组的索引从0开始,所以索引的范围就是0 ~ 数组长度-1,例如开辟了3个空间的数组,所以可以使用的索引是:0,1,2,如果此时访问的时候超过了数组的索引范围,会产生java.lang.ArrayIndexOutOfBoundsException 异常信息;
        当我们数组采用动态初始化开辟空间后,数组里面的每一个元素都是该数组对应数据类型的默认值;
        数组本身是一个有序的集合操作,所以对于数组的内容操作往往会采用循环的模式完成,数组是一个有限的数据集合,所以应该使用 for 循环。
        在 Java 中提供有一种动态取得数组长度的方式:数组名称.length;

    范例: 定义一个int型数组

    public class ArrayDemo {
        public static void main(String args[]) {
            int data[] = new int[3]; /*开辟了一个长度为3的数组*/
            data[0] = 10; // 第一个元素
            data[1] = 20; // 第二个元素
            data[2] = 30; // 第三个元素
            for(int x = 0; x < data.length; x++) {
                System.out.println(data[x]); //通过循环控制索引
            }
        }
    }

    数组本身除了声明并开辟空间之外还有另外一种开辟模式。

    范例: 采用分步的模式开辟数组空间

    public class ArrayDemo {
        public static void main(String args[]) {
            int data[] = null;
            data = new int[3]; /*开辟了一个长度为3的数组*/
            data[0] = 10; // 第一个元素
            data[1] = 20; // 第二个元素
            data[2] = 30; // 第三个元素
            for(int x = 0; x < data.length; x++) {
                System.out.println(data[x]); //通过循环控制索引
            }
        }
    }

    但是千万要记住,数组属于引用数据类型,所以在数组使用之前一定要开辟控件(实例化),如果使用了没有开辟空间的数组,则一定会出现 NullPointerException 异常信息:

    public class ArrayDemo {
        public static void main(String args[]) {
            int data[] = null;
            System.out.println(data[x]);
        }
    }

    这一原则和之前讲解的对象是完全相同的。

    数组在开发之中一定会使用,但是像上面的操作很少。在以后的实际开发之中,会更多的使用数组概念,而直接使用,99%情况下都只是做一个 for 循环输出。
    数组引用传递

    既然数组属于引用数据类型,那么也一定可以发生引用传递。在这之前首先来研究一下数组的空间开辟。

    范例: 观察一道程序

    public class ArrayDemo {
        public static void main(String args[]) {
            int data[] = null;
            data = new int[3]; //开辟一个长度为3的数组
            data[0] = 10;
            data[1] = 20;
            data[2] = 30;
        }
    }

      

    新建数组变量

    那么既然说到了引用数据类型了,就一定可以发生引用传递,而现在的引用传递的本质也一定是:同一块堆内存空间可以被不同的栈内存所指向。

    范例: 定义一个程序

    public class ArrayDemo {
        public static void main(String args[]) {
            int data[] = null;
            data = new int[3]; //开辟一个长度为3的数组
            int temp[] = null; //声明对象
            data[0] = 10;
            data[1] = 20;
            data[2] = 30;
            temp = data;  //int temp[] = data;
            temp[0] = 99;
            for(int i = 0; i < temp.length; i++) {
                System.out.println(data[i]);
            }
        }
    }

    引用传递分析都是一个套路。同一块堆内存被不同的栈内存所指向。
    数组静态初始化

    在之前所进行的数组定义都有一个明显特点:数组先开辟内存空间,而后再使用索引进行内容的设置,实际上这种做法都叫做动态初始化,而如果希望数组在定义的时候可以同时出现设置内容,那么就可以采用静态初始化完成。

    数组的静态初始化一共分为以下两种类型:
    Tables     Are
    简化格式:     数据类型 数组名称 = {值, 值,…}
    完整格式:     数据类型 数组名称 = new 数据类型[] {值, 值,…}

    范例: 采用静态初始化定义数组

    public class ArrayDemo {
        public static void main(String args[]) {
            int data[] = {1, 2, 4, 545, 11, 32, 13131, 4444};
            for(int i = 0; i < data.length; i++) {
                System.out.println(data[i]);
            }
        }
    }

    在开发之中,对于静态数组的初始化强烈建议使用完整语法模式,这样可以轻松地使用匿名数组这一概念。

    public class ArrayDemo {
        public static void main(String args[]) {
            System.out.println(new int[] {1, 2, 4, 545, 11, 32, 13131, 4444}.length);
        }
    }
    
    

    以后使用静态方式定义数组的时候一定要写上完整格式。

    数组最大的缺陷:长度固定。
    二维数组

    在之前所使用的数组发现只需要一个索引就可以进行访问,那么这样的数组实际上非常像一个数据行的概念。

    现在痛过一个索引就可以取得唯一的一个记录。所以这样的数组可以简单理解为一维数组,而二维数组本质上指的是行列集合,也如果要确定某一个数据需要行索引和列索引来进行定位。

    如果要想确定一个数据则数据使用的结构是“数组名称[行索引][列索引]”,所以这样的结构就是一个表的结构。

    那么对二维数组的定义有两种声明形式:

        数组的动态初始化:数据类型 对象数组[][] = new 数据类型[行个数][列个数];
        数组的静态初始化:数据类型 对象数组[][] = new 数据类型[行个数][列个数]{{值, 值,…}, {值, 值,…},…};

    数组的数组就是二维数组。

    范例: 定义一个二维数组

    public class ArrayDemo {
        public static void main(String args[]) {
            //此时的数组并不是一个等列数组
            int data[][] = new int[][] {
                {1, 2, 3}, {4, 5}, {6, 7, 8, 9}};
            //如果在进行输出的时候一定要使用双重循环,
            //外部的循环控制输出的行数,而内部的循环控制输出列数
            for(int i = 0; i < data.length; i++) {
                for(int j = 0; j < data[i].length; j++) {
                    System.out.print("data[" + i + "][" + j + "]=" + data[i][j] + "、");
                }
                System.out.println();
            }
        }
    }

    由于输出麻烦,所以可以忽略了,在进行开发之中,出现二位数组的几率并不高。

    同样的,我们看看别人的解析,答案最后是

    正确答案: A C F

    我是歌谣,喜欢敲代码,无聊刷刷题。不多说了,我先去敲代码去。有什么不合理之处,欢迎吐槽。

    阅读目录(置顶)(长期更新计算机领域知识)

    阅读目录(置顶)(长期更新计算机领域知识)

    阅读目录(置顶)(长期科技领域知识)

    歌谣带你看java面试题

    展开全文
  • c语言结构体学习整理(结构体初始化,结构体指针)

    万次阅读 多人点赞 2018-11-01 20:22:12
    首先我们为什么要用到结构体,我们都已经学了很多int char …等类型还学到了同类型元素构成的数组,以及取上述类型的指针,在一些小应用可以灵活使用,然而,在我们实际应用中,每一种变量进行一次声明,再结合起来...
  • 不同编译器给出不同的i值,有的为3,有的为4,哪个是正确的? *3.4 有这样一个巧妙的表达式:a^=b^=a^=b;它不需要临时变量就可以交换a和b的值。 3.5 可否用显式括号来强制执行我所需要的计算顺序并控制相关的副...
  • 1.举例:  $a=array(1=>5,5=>8,22,2=>'8',81);  Echo $a[7];//81  Echo $a[6];//22  Echo $a[3];//报错
  • 17.【 STEMA】以下关于二分查找算法的描述中,不正确的是(A) A二分查找算法的最大查找时间与查找对象的大小成正比 B二分查找一般从数组的中间元素开始 C二分查找只对有序数组有效 D二分查找可以使用递归实现 ...
  • Java集合面试题

    万次阅读 多人点赞 2019-06-25 14:46:19
    基于应用的需求来选择使用正确类型的集合,这对性能来说是非常重要的。例如,如果元素的大小是固定的,并且知道优先级,我们将会使用一个 Array ,而不是 ArrayList 。 一些集合类允许我们指定他们的初始容量。...
  • 赋给数组 b 的语句是( )。 A)char b[10]={'H','e','l','l','o','!'}; B)char b[10];b="Hello!"; C)char b[10];strcpy(b,"Hello!"); D)char b[10]="Hello!"; 答案:B;只能在定义的时候使用=来初始化, 不能单独...
  • 数组和链表的区别

    2019-06-29 10:12:57
    数组是顺序的存储结构。 链表通过指针来连接元素与元素,数组则是把所有元素按次序依次存储。 链表的插入删除元素相对数组较为简单,不需要移动元素,且较为容易实现长度扩充,但是寻找某个元素较为困难; 数组寻找...
  • C语言

    万次阅读 多人点赞 2019-12-18 23:01:50
    关于字节大小的问题 16位编译器:char 1个字节 char* 2个字节 int 2个字节 float 4个字节 double 8个字节 32位编译器:char 1个字节 char* 2个字节 int 4个字节 float 4个字节 double 8个字节 64位编译器:char 1个...
  • 索引数组&关联数组

    千次阅读 2018-11-12 11:12:52
    &lt;?... //php(数字)索引数组一般表示数组元素在数组中的位置,是有数字组成,下列标从0开始; //数组的构成是有 键 和 值 (key-value)所构成 例如...值 在数组中,键是不相同的,值可以相同 键如果相同时最...
  • 上述例子是一维数组的例子,如果是多维数组,将不同维度上的切片操作用  逗号  分开就好了 # coding: utf-8 import numpy as np arr = np.arange(12).reshape((3, 4)) print 'array is:' print arr # 取第一...
  • C语言中变长数组的使用方法

    千次阅读 2019-01-13 20:19:14
    C语言中变长数组的使用方法
  • 默认的数组都是一维,“变长数组也是”。 只不过变长数组被定义为一个容器后,更容易实现对于数据的操作的。 易混淆点 一个数据对应多个数据,即一对多,那么就是一维度; 如果一个多,多里面仍然是一对多,那么...
  • content: '您确认删除该图片和描述信息吗?确定将删除图片和描述信息' , success(res) { if (res.confirm) { that.data.list.splice(no, 1 ) that.setData({ list: that.data.list }) } } }) }   ...
  • 一、问题描述 将一个数组(或请求返回的json结果为数组),如 a = [0,1,2,3,4] 赋值给另一个空的数组 b = [] 会出现如果修改a或b中的数据,a和b都会发生改变,那么该怎么解决呢? 二、错误原因 ...
  • CNN卷积神经网络原理详解(上)

    万次阅读 多人点赞 2019-10-18 23:59:17
    这个想法是,你给计算机这个数组的输入,它最终会输出数字,描述了图像是一个类的概率(0.85为猫,0.1为狗,0.05为鸟等)。 现在我们知道这个问题以及输入和输出了,我们来思考如何解决这个问题。我们希望计算机做...
  • 详解数组的下标

    千次阅读 2020-08-03 10:11:07
    提到数组,我想你肯定不陌生,甚至还会自信地说,它很简单啊。是的,在每一种编程语言中,基本都会有数组这种数据类型。不过,它不仅仅是一种编程语言中的数据类型,还是一种最基础的数据结构。尽管数组看起来非常...
  • 最近在关于数组的编程中发现这样一个问题:我想写一个函数模板以实现一个数组的排序,其中数组的大小是不确定的。我最开始的写法是: // A code block void sort(T arr[]) { int len; len = sizeof(arr) / ...
  • C++面试题汇总 (一)

    万次阅读 多人点赞 2019-06-27 08:54:39
    描述内存分配方式以及它们的区别? 1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。 2) 在栈上创建。在执行函数时,函数内...
  • 在Java语言规范中,有关数组索引类型有下列描述: Arrays must be indexed by int values; short , byte , or char values may also be used as index values because they are subjected to unary numeric ...
  • c语言习题集合(数组

    千次阅读 2020-03-31 21:50:21
    以下关于数组描述正确的是( )。 A. 数组的大小是固定的,但可以有不同的类型的数组元素 B. 数组的大小是可变的,但所有数组元素的类型必须相同 C. 数组的大小是固定的,所有数组元素的类型必须相同 D. 数组的大小...
  • 数组的声明与使用

    万次阅读 多人点赞 2017-01-18 18:19:24
    一、数组的概念 所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为...
  • 关于正确使用PHP的in_array数组

    万次阅读 2017-10-06 11:41:14
    in_array数组误区官方实例 在数组中搜索值 “Mark” ,并输出一些文本: &lt;?php $people = array(&quot;Bill&quot;, &quot;Steve&quot;, &quot;Mark&quot;, &quot;David&quot...
  • 以下关于数组描述正确的是( A. 数组的大小是固定的但可以有不同的类型的数组元素 B. 数组的大小是可变的但所有数组元素的类型必须相同 C. 数组的大小是固定的所有数组元素的类型必须相同 D. 数组的大小是可变的...
  • 对多维数组的理解

    万次阅读 2016-07-24 21:06:12
    1.我们知道数组名就是指针常量。下面我们来介绍数组名的作用和用法 A. int a[3]; 这是一个一维数组 a:表示数组首元素的地址。0x1000 &a:表示对一维数组数组名取地址等于数组的地址。0x1000 B. int a[2][2]; 这...
  • C语言关于数组与指针内容小结

    千次阅读 2016-05-08 14:31:46
    数组的基本概念 什么是数组数组就是:数组是相同类型的元素的一个集合 类型说明符 数组名 [常量表达式]; 其中,类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的...
  • 微信小程序 关于打印数组为空,数组长度为0的问题 踩坑 今天在做项目测试时,偶然发现了一个关于数组的问题。一开始让我有点疑惑和奇怪,但是发现其实是一个小问题。 需求描述:前端从后台数据库发送request请求,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 244,691
精华内容 97,876
关键字:

关于数组的描述哪个是正确的