java -- 数据结构总结
概念
数据结构:数据之间的关系,提高程序效率。
逻辑关系:认为认为
集合:在一个范围内有多个数据,数据之间没有关系
线性:一对一关系
树形:一对多
图:多对多
物理关系:内存存储
顺序存储:数组
链式存储:链表
问题
数据结构难不难? 容易但很难
有没有用? 有用且没有用,平时工作可能用不上,但是能够学习编程思想
算法
大数字存储,大数字的运算
int或bigint都有数字大小限制,所以可以用数组保存,长度100的数组就能够存储很大的数字了。例如:372 * 18
两个大数字相乘??
排序
插入排序、希尔排序
选择排序、堆排序
冒泡排序、快速排序
归并排序
基数排序
查找
二分法查找(数据库的索引)
常用数据结构
ArrayList:动态数组,当容量不足时,自动扩容为1.5倍 +1
LinkedList:双向循环链表,不需要扩容
单链表
单向循环链表
双链表
双向循环链表
比较
添加:LinkedList效率高,添加中间最慢,因为从第一个就知道最后一个,因为ArrayList有可能要扩容
删除: LinkList效率依然高,删除中间最慢,ArrayList从前往后删除效率太低,从后往前删除还是快点,注意:循环删除时候,一定要从后往前遍历
获取和设置:LinkedList效率很低,ArrayList是数组的,所以效率高得多