2022-07-15 第六组 程梓杭 Java(3)
今日学习内容:数据结构和Java基础算法
目录:
一、数据结构
1、数组
2、线性表
3、链表
4、树
5、图
二、Java基础算法
1、线性查找
2、二分法查找(折半查找)
3、冒泡排序
4、简单选择排序
5、数组逆序输出和数组扩容
数组:
数组可以理解为将数据(元素)放入地址连续(下标)的空间中。数组下标从0开始,到数组上限减一为止。Java中的数组在定义时就需要规定数组长度和内容,长度手动输入,内容初始为0或null(取决于数组数据类型)。
int[] arr = new int[3] {1,2,3}
定义了一个长度为3,内容为{1,2,3}的数组,数组元素的数据类型为int。
线性表:
数组的运用,可以用下标表示数据在表中的位置。
链表:
一张特殊的线性表表,表中元素存在顺序且元素间存在方向。实质是二元数组或者三元数组,数组中存储相连元素的地址和自己存储的元素内容。可以通过访问链表中存储的有序地址来做到顺序的实现。
树:
tree,是一个递归的概念。树有树冠和树枝,tree有root和child。一个树冠下有两个树枝被称为二叉树。
树的递归体现在:除了树顶,树冠既能是下一层树冠的父母节点,又能是上一层树枝的子节点。
图:
图分为有向图和无向图。图可以理解为特殊的树的运用,递归概念在图中十分紊乱,root和child的结构在图中也不确定。
线性查找:
按顺序循环判断数组内元素是否与目标相等。相等时结束循环并返回数组内该元素下标。
二分法查找:
二分法前提是数组内元素是存在顺序的。利用数组中间值将数组分为两个部分,判断目标同数组中值的关系来确定目标在数组上半部分还是下半部分。循环上述判断操作直到找到目标在数组中的位置。
冒泡排序:
冒泡排序的思想是大的泡泡在水中上浮,意为数组中大的元素后移。外循环控制内循环次数,内循环实现小数前移。内循环结束时,大的元素排在后方,下一次内循环循环次数减一。
简单选择排序:
循环查找第i次的最小值,用一个变量存储i中的最小值,然后将最小值放在第i个位置。最后得到一个从小到大的有序数组。
数组逆序输出和数组扩容:
数组逆序输出有多种思路。一种是用新数组逆序存储原数组并输出,一种是通过头尾交换的方式改变原数组的顺序并输出。
数组扩容可以用一个新数组存储原数组数据,然后将新数组赋给原数组,这样就得到了一个扩容的原数组。
数组缩容和数组扩容相近,核心是将新数组赋给原数组,具体新数组该保留原数组的哪些值需要具体考虑。
心得体会:
上面的内容都是很常见的数据结构知识,其中理解数组的概念是关键。对于不懂的循环嵌套结构,只需要记录每一次循环中的关键数据,用心体会,就能理解其中含义。

浙公网安备 33010602011771号