一下内容为个人理解,非专业出身,所以描述的不专业,比较偏向大白话。
为什么要用数据结构
日常当中很多信息,大家在处理信息的时候都会不自觉的使用一些数据结构思想。查字典就是一种,按照ABCD的顺序去初步定位到自己要查的字在哪个范围,然后在逐一去看,最终找到自己想要的字。还有在网购的时候,都有一些筛选条件,比如你要哪个品牌的,多大尺寸的,什么价位的等等。用了采用数据结构思想,可以节约查找时间,加快增删效率,总体目的就是提高工作效率。
什么是数据结构
数据结构,一个是数据,一个是结构。数据就是各种各样的信息,然后这些信息相互关联,构建出来的效果就是结构。
都有哪些数据结构
既然是程序员,应该听过数组结构,单向链表结构,双向链表结构,散列表结构等等。这些结构中的数据,只取出一个,不叫数据结构,单个的就是一个一个的数据,但是这些数据相互之间有关系,组合到一起就是各种各样不同的数据结构。
数组就是索引连续的,一个挨着一个的,物理地址连续的。
单向链表就想单行道,只能从一个方向往另一个方向查询。
双向链表就是双行到,可以往两个方向查询。
散列表在HashMap集合里面有详细讲解。
还有红黑树结构等
逻辑结构和物理结构
逻辑结构,就是说这些数据之间存在这逻辑关系,形成的逻辑结构。比如集合结构,线性结构,树状结构,图形结构等等。
物理结构,是说这些数据在存储的时候是什么结构。
比如数组就是物理地址连续存储的,有序的。
链表结构就是物理地址不连续的,也是有序的。
散列表是既有物理地址连续的部分,也有物理地址不连续的部分,它是无序的。
数据结构分类
大概就是一下几类,如果都掌握了,工作中基本都能满足了
线性表:零个或多个数据元素的有序序列。例如ArrayList,LinkedList。
队列:只允许在一段插入,另一端删除操作的线性表。例如Handler消息队列。
堆栈:栈是限定在表尾插入和删除操作的线性表。例如Android中管理Activity的任务栈。
树:树是n个节点的有序集,节点可以想树一样,越向叶子节点,就没有交集。例如HashMap集合中如果单向链表超过8个就会变成树结构。
图论:有顶点的又穷空集合,和顶点之间边的集合组成。
排序和查找算法:排序是对数据进行顺序排列,查找是在大量数据中寻找我们需要的数据的过程。