基础数据类型
- short int 长度为2字节
基础存储数据集:
- 数组可以实现顺序遍历但是插入删除操作复杂,平均移动n/2个元素
- 链表因为存储的地址不连续(逻辑上连续实际上不连续),可以实现顺序遍历
- 哈希表是随机存储,所以是离散分布,顺序遍历实现不了
- 队列只可以在队尾插入队头删除,不可以实现中间插入和删除,不满足条件
三维数组是层行列堆积
广义表:
广义表是n (n>=0)个元素a1,a2,a3,…,an的有限序列,其中ai或者是原子项,或者是一个广义表。通常记作LS=(a1,a2,a3,…,an)。LS是广义表的名字,n为它的长度。若ai是广义表,则称它为LS的子表。
折半查找:
- 算法条件:
1.必须采用顺序存储结构
2.必须按关键字大小有序排列。 - 算法过程:
首先,假设表中元素是按升序排列,将表中间位置记录的[关键字]与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置[记录]将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的[记录],使查找成功,或直到子表不存在为止,此时查找不成功。 - 时间复杂度:O(h)=O(log2n)
特殊矩阵和稀疏矩阵哪一种压缩存储后失去随机存取的功能?为什么?
- 答:
- 特殊矩阵指值相同的元素或零元素在矩阵中的分布有一定规律,因此可以对非零元素分配单元(对值相同元素只分配一个单元),将非零元素存储在向量中,元素的下标i和j和该元素在向量中的下标有一定规律,可以用简单公式表示,仍具有随机存取功能。
- 稀疏矩阵是指非零元素和矩阵容量相比很小(t<<m*n),且分布没有规律。用十字链表作存储结构自然失去了随机存取的功能。即使用三元组表的顺序存储结构,存取下标为i和j的元素时,要扫描三元组表,下标不同的元素,存取时间也不同,最好情况下存取时间为O(1),最差情况下是O(n),因此也失去了随机存取的功能。
- 随机存取与非随机存取:
- 随机存取就是直接存取,可以通过下标直接访问的那种数据结构,与存储位置无关,例如数组。
- 非随机存取就是顺序存取了,不能通过下标访问了,只能按照存储顺序存取,与存储位置有关,例如链表。
数组
- 定义的结构形式:
-
栈内存
在方法中定义的一些基本类型的变量和对象的引用变量都在方法的栈内存中分配,当在一段代码中定义一个变量时,java就在栈内存中为这个变量分配内存空间,当超出变量的作用域后,java会自动释放掉为该变量所分配的内存空间。 -
堆内存
堆内存用来存放由new运算符创建的对象和数组,在堆中分配的内存,由java虚拟机的自动垃圾回收器来管理。在堆中创建了一个数组或对象后,同时还在栈内存中定义一个特殊的变量。让栈内存中的这个变量的取值等于数组或者对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量,引用变量实际上保存的是数组或对象在堆内存中的地址(也称为对象的句柄),以后就可以在程序中使用栈的引用变量来访问堆中的数组或对象。 -
与结构或类中的字段的区别
数组中的所有元素都具有相同类型(这一点和结构或类中的字段不同,它们可以是不同类型)。数组中的元素存储在一个连续性的内存块中,并通过索引来访问(这一点也和结构和类中的字段不同,它们通过名称来访问)。
-
栈内存