数据结构是数据的存储和组织的方式,指相互之间存在一种或者多种特定的关系的数据元素集合。通常情况下,好的数据结构,可以带来更高的处理计算效率和存储效率。数据结构往往和高效的检索算法和索引技术相关。
常见数据结构:数组Array、栈stack、队列queue、链表LinkedList、树Tree、哈希表Hash、堆Heap、图Grap
数据的运算包含:检索、排序、插入、删除、修改等
数 据 结 构 | 逻辑结构 | 线性结构 | 线性表 |
栈 | |||
队列 | |||
非线性结构 | 树形结构 | ||
图形结构 | |||
存储结构 | 顺序存储 | ||
链式存储 |
集合:结构中的数据元素除了同属于一种类型外,别无其他关系。
线性结构:结构中的元素之间存在一对一的关系。
树形结构:结构中的元素之间存在一对多的关系。
数据结构在计算机中的存储方式有:
顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑关系
链式存储方式:在每一个数据元素中增加一个存放地址的指针,用此指针来表示数据元素之间的逻辑元素
时间复杂度:一个算法的时间与算法中语句的执行次数成正比比例,哪个算法中语句执行次数多,它花费的时间就多。一个算法中的语句执行次数成为语句频度或时间频度,几位T(n)。
空间复杂度:算法所需要的存储空间的度量,记作S(n)= O(f(n)),其中n为问题的规模。一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。如果额外空间相对于输入量来说是个常数,则称此算法在原地工作。
算法的输入输出数据所占用的存储空间是由要解决的问题决定的。是通过参数表由调用函数传递而来的,它不随算法的不同而改变。存储算法本身所占用的存储空间与算法的书写长度成正比,要压缩这方面的存储空间,就必须编写出较短的算法。
数组
数组又分为有序数组和无序数组,其实数组就是一段连续的内存,即使在物理内存上是连续的,在逻辑上肯定也是连续的。
数据结构不仅提供数据的容器,还提供了对数据的操作方法,比如检索、插入、删除、排序等
无序数组的优缺点:插入块,如果知道下标,可以很快的存取。缺点是查找慢、删除慢、大小固定。
有序数组中的数组元素按一定的规则排序,其好处就是在元素值查找时使用二分查找。查找效率要比无序数组高很多。当插入一个元素的时候要判断该元素的下标,然后对下标之后的元素全部后移一位,才能插入,这无疑增加了开销。因此有序数组适合频繁查找,插入删除较少的情况。
有序数组的优缺点:查找效率高,删除和插入慢、大小固定。