数据结构概述
数据结构是计算机存储、组织数据的方式。
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
数据结构的出现是为了在计算机种更加科学的管理数据,选择合适的数据结构可以让我们在操作数据时性能更加优秀,操作更加方便。
常用的数据结构分为线性结构和非线性结构。
1、线性结构(线性表):数组,队列,链表,栈等。
2、非线性结构(非线性表): 树,图等。
参考文献:
《大话数据结构 精编版 彩装》
《漫画算法2:小灰的算法进阶》
数组概述
由于的单一变量存储无法解决大量的数据存储,因此我们需要更好的一种方式来进行存储大量数据。
数组是线性数据结构中最为基础,最为典型的一种顺序型结构。
它用一组 连续的内存空间 ,来存储一组具有 相同类型 的数据。
与变量相比,变量是一种单一的数据存储方时,而数组是用于存储一连串的一组数据。
数组组成
数组元素:存储在数组中的数据
数据元素类型:在数组中必须是相同类型的数据
数组名:用于区分不同的数组,命名规范同变量一致
数组容量:数组中所存储的数据元素的多少
数组下标/索引:必须从0开始
数组与变量的语法区别:
-
变量:
变量数据类型 变量名 = 变量值;
-
数组:
// 声明数组:在内存空间中开辟一串连续的空间 数组的元素类型[] 数组名 = new 数组元素数据类型[数组容量]; // 将数组赋值:将数组元素存储到指定的数组空间中 数组名[数组下标] = 元素值; // 从数组中取出数据 数组名[下标]
数组的命名元素
1、数组的元素的数据类型
2、数组元素
3、数组名
4、数组容量
5、数组下标/索引(index)
数组定义
例如:存储五名学生的成绩
// 声明数组:在内存空间中开辟一串连续的空间 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}; // 遍历 // scores[0] = 90; // scores[1] = 80; // scores[2] = 70; // scores[3] = 60; // scores[4] = 50; // for (int i = 0; i < 5; i++) for(int i = 0; i < scores.length; i++){ System.out.println(scores[i]); }
2、通过增强for循环来遍历出数据的每一个元素(后期使用多)
for (数组元素数据类型 临时变量名 : 数组名){ 临时变量名 }