Java数据结构和算法介绍了计算机编程中使用的数据结构和算法,对于在计算机应用中如何操作和管理数据以取得最优性能提供了深入浅出的讲解。全书共分为15章,分别讲述了基本概念、数组、简单排序、堆和队列、链表、递归、进阶排序、二叉树、红黑树、哈希表及图形等知识。附录中则提供了运行专题Applet和例程、相关书籍和问题解答。本书提供了学完一门编程语言后进一步需要知道的知识。本书所涵盖的内容通常作为大学或学院中计算机系二年级的课程,在学生掌握了编程的基础后才开始本书的学习。
java数据结构和算法学习总结
各个线性类型数据结构的特点以及使用场景
数组:
特点:元素在内存中线性连续存储,可以根据下标快速访问数组元素,但是增删效率不是很高,每一次增加或删除元素都需要
大量移动元素空出插入位置或者填补删除元素的位置。
使用场景:频繁查询,很少进行增加或删除操作的情况
链表:
特点:存储可以不连贯,根据索引将数据联系起来,当查询元素的时候需要从开头开始去查询,所以效率比较低,然而增加或删除
元素的时候只需要修改索引就可以了。
使用场景:少查询,需要频繁插入或删除的情况
队列:
特点:先进先出(FIFO/fisrt in first out),如同一个单向隧道,先进的车先出。
使用场景:多线程的阻塞队列管理非常有用
栈:
特点:后进先出(LIFO/last in first out),就像一个箱子,先放进去的东西在底部,需要先拿出上面的东西,下面的东西才能拿出来
使用场景:实现递归以及表达式计算,android运用栈的原理实现back stack
5.数组与链表的区别
(1)数组连续,链表不连续
(2)数组内存静态分配,链表内存动态分配
(3)数组查询时间复杂度为O(1),链表为0(n)
(4)数组增加删除的时间复杂度为O(n),链表为O(1)
(5)数组从栈中分配空间,链表从堆中分配空间
- PC官方版
- 安卓官方手机版
- IOS官方手机版