数据结构概述

数据结构的出现是为了在计算机中更加科学的管理数据,选择合适的数据结构可以让我们在操作数据时性能更加优秀,操作更为方便。

常见的数据结构分为两类:

  1. 线性数据结构(线性表)
  1. 数组
  2. 链表
  3. 队列
  4. ...
  1. 非线性数据结构(非线性表)

数组概述

例如:我要存储一个学生的成绩,使用 double 类型的变量即可搞定。但当我需要存储更多的学生成绩时,例如存储全班学生成绩,很显然再使用 double 类型的变量一个个的来存储将会使程序变得越来繁琐,不方便我们进行使用。

double score = 90;

// 存储全班成绩
double score1 = 90;
double score2 = 80;
// ...

我们需要一种更为优秀的数据存储方式。

数组是线性数据结构中最为基础,最为典型的一种顺序型结构。

它用一组 连续的内存空间 ,来存储一组具有 相同类型 的数据。

与变量相比,变量是一种单一的数据存储方式,而数组是用于存储一连串的一组数据。

处理一维数据的CNN模型 一维数据基本没用_处理一维数据的CNN模型

 数组组成

变量:

变量数据类型 变量名 = 变量值;

数组:

// 声明数组:在内存空间中会开辟一串连续的空间
数组元素数据类型[] 数组名 = new 数组元素数据类型[数组容量];
// 给数组赋值:将数组元素存储到指定的数组空间中
数组名[下标] = 元素值;
// 从数组取出元素
数组名[下标]

  1. 数组元素数据类型
  2. 数组元素
  3. 数组名
  4. 数组容量
  5. 数组下标(index)

数组的定义

例如:我要存储5名学生成绩。

// 声明数组:在内存空间中会开辟一串连续的空间
double[] scores = new double[5];
// 给数组赋值:将数组元素存储到指定的数组空间中
scores[0] = 80;
scores[2] = 90;

// 取出数组的值
scores[2]

注意:数组的容量,一经定义,不可改变。

在声明数组时,直接进行赋值。

数组元素数据类型[] 数组名 = {元素值1, 元素值2, ....};

还有一种

数组元素数据类型[] 数组名 = new 数组元素数据类型[]{元素值1, 元素值2, ....};

数组动态赋值

利用数组赋值的规律,采用循环结构进行的键盘绿入

【循环分析】

1.有规律,使用循环,有固定次数for循环

2.循环条件:i < 数组容量

   循环变量:int i = 0;

   循环出口:i++;

3.循环操作:

        1.键盘录入数据

        2.将数据赋值给数组的指定下标

4.套用语法

数组默认值

整数型数组(byte、short、int、long):默认值为0

浮点型数组(float、double):默认值为0.0

布尔型数组(boolean):默认值为false

字符型数组(char):默认值为一个空格(\u0000)

字符串型数组(String):默认值为 null

数组遍历

数据的操作,逃脱不了几个本质: CRUD (增删改查)。

  • 增加数据:数组名[下标] = 元素值;
  • 修改数据:数组名[下标] = 新元素值;
  • 删除数据:数组名[下标] = 数组对应元素类型的默认值;
  • 查询数据:
  • 查询单个的:数组名[下标]
  • 查询所有的:
  • 利用循环将数组中的每一个空间的元素取出来(遍历)

1.通过循环,遍历所有的数组下标,根据下标取出每一个元素 

double[] scores = {90, 80, 70, 60, 50};
//遍历
for (int i = 0; i < scores.length; i++) {
   System.out.println(scores[i]);
}

 2.通过增强for循环来遍历出数组的每一个元素

for (数组元素数据类型 临时变量名 : 数组名) {
    临时变量名
}