JAVA必须掌握的数据结构和算法
常见的数据结构 链表 LinkedHashSet LinkedList 底层数据结构由链表和哈希表组成。 数据的添加和删除都较为方便,就是访问比较耗费时间。 数组 ArrayList 访问数据十分简单,而添加和删除数据比较耗工夫 堆 堆是一种图的树形结构,被用于实现“优先队列",优先队列是一种数据结构,可以自由添加数据,但取出数据时要从最小值开始按顺序取出 堆的特点: ①堆中的每个结点最多有两个子结点 ②子结点必定大于父结点 ③把新数据放在最下面一行靠左的位置。当最下面一行里没有多余空间时,就再往下另起一行,把数据加在这一行的最左端 ④如果子结点的数字小于父结点的,就将父结点与其左右两个子结点中较小的一个进行交换 堆中最顶端的数据始终最小,所以无论数据量有多少,取出最小值的时间复杂度都为O(1) 可知树的高度为log2n,那么重构树的时间复杂度便为O(logn) 栈 (LIFO) 略 队列 (FIFO) 略 哈希表 HashSet TreeSet底层数据结构是红黑树 哈希函数(Hash)计算key,哈希值除以数组的长度5,求得其余数。这个余数就是key的编号即位置 如果发生哈希冲突,就...
