什么是数据结构?
是数据元素的集合:元素或者对象间存在一种或者多种特定关系或者逻辑关系。
最基本的数据结构有:数组 链表 堆栈 队列。
- 队列:先进先出的逻辑结构,只允许队头删除,队尾添加。双端队列可以在俩端插入和删除。
- 数组:使用一块连续内存空间保存数据,数据个数在分配内存时确定。在数组末尾增删数据时间复杂度是O(1),最坏情况是O(n)
- 链表:非连续内存单元存数据,通过指针链接内存单元。最后一个节点指针指向NULL,无需提前分配固定大小存储空间,存储数据时分配内存并将内存插入链表中。插入删除时间复杂度:O(1)只需调整指针。 类型有:单链表 双链表 循环链表
- 堆栈:先进后出的逻辑结构 栈顶完成操作,通过链表或数组可以实现它。
数据存储结构
数据在计算机中存储的结构,存储方式有:顺序存储 非顺序存储。
- 顺序存储是把数据存储在一块连续的存储介质上;比如数组。
- 非顺序存储是数据不一定存在连续的位置上,只需知道前后的数据,即可彼此连续起来;比如链表。
最常用的算法: 递归 排序 二分查找 搜索 哈希 贪心 分治 回溯 动态规划 字符串匹配 最长用的数据结构: 数组 链表 栈 队列 散列表 二叉树 堆 跳表 图 trie树
什么是复杂度分析? 执行时间和占用空间可以评估算法性能,统称为复杂度,描述算法执行时间与数据规模的增长关系。