通用数据结构:数组、链表、树、哈希表

专用数据结构:栈、队列、优先级队列

排序:插入排序、希尔排序、快速排序、归并排序、堆排序

图:邻接矩阵、邻接表

外部存储:顺序存储、索引文件、B-树、哈希方法

通用数据结构

通过关键字的值来存储并查找数据。

数组和链表是最慢的,树相对较快,哈希表最快。但哈希表复杂,要先预知要存储多少数据,存储空间利用率也不高。

关系图:

in java 数据结构 java数据结构使用场景_in java 数据结构

 

 

 

Java只存储引用而不是实际的对象,所以大多数Java算法执行速度更快。分析算法时,也只是考虑对象引用的移动。

数组删除元素很慢;若存储数据大小不清楚或要频繁插入删除数据,则考虑链表;哈希表对数据插入顺序不敏感,且哈希表不能提供有序遍历,也不能对最大最小值元素进行存取。

通用结构顺序的比较:

in java 数据结构 java数据结构使用场景_in java 数据结构_02

 

 

 专用数据结构

在程序中辅助实现一些算法。栈、队、优先级队列等,是抽象数据结构(ADT),它们又由一些更加基础的结构如数组、链表或堆组成。

栈:一般通过数组或链表实现,链表比数组稍慢一些,因为链表有分配内存和回收分配内存的过程。

队:可通过数组或双端链表实现,链表必须是双端的,这样才能一端插入一端删除。

优先级队列:可通过有序数组、双端链表或堆实现,访问最高优先级数据时使用。若注重速度则用堆。

专用结构的比较:

in java 数据结构 java数据结构使用场景_in java 数据结构_03

 

 

 排序

in java 数据结构 java数据结构使用场景_in java 数据结构_04

 

 图

不存储通用数据,直接模拟现实世界的情况。

如何表示图:使用邻接矩阵或邻接表。稠密图用邻接矩阵,稀疏图用邻接表。

外部存储

若数据量大到内存容不下时,只能被存到外部存储空间,即磁盘文件。

如何选择外部存储:

in java 数据结构 java数据结构使用场景_数据结构_05