数据结构与算法总结

1.  线性表

数组实现 & 链表实现

1.1 数组实现:

       数组是一种大小固定的数据结构,对线性表的所有操作都可以通过数据来实现。当数组不能再存储新元素的时候,可以通过创建新数组的方式解决。

1.2 链表实现

       链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列节点组成,这些节点不必在内存中相连。  

1.3 数组 PK 链表

 优点缺点
数组实现通过下标来访问或者修改元素,比较方便插入和删除的花费开销较大
链表实现添加或者删除节点时,效率很高不能通过下表进行元素的查询

2. 栈和队列

2.1 栈操作

          栈(LIFO)只能在表的末端(栈顶)进行插入(入栈)和删除(出栈)操作;

2.2 队列操作

          队列只允许在表的前端(front、队头)进行删除操作,在表的后端(rear、队尾)进行插入操作;

3. 树、二叉树、查询二叉树、平衡二叉树、红黑树

树:每个节点由零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;

 二叉树
区别

无序;

每个节点的子节点数无限制;

不为空,至少存在一个节点;

有序;

每个节点的子节点数最多为2;

可以为空;

4. 查询算法

4.1 顺序查找(线性查找)

        过程:从第一个元素开始查询,直到发现被查询元素或到达最后一个元素;

4.2 二分查找(折半查找)

        过程:每次查询时,将现有元素分为大致相等的两部分,最中间值进行比较,根据比较结果,继续直至找到被查询元素或最后一个元素;<注:前提为->有序>

5. 排序算法

冒泡排序、简单选择排序、直接插入排序、希尔排序、归并排序、快速排序、堆排序

5.1 排序算法比较

6. 动态规划、分治算法

6.1 区别

       a> 分治法将分解后的子问专题看成相互独立的;

       b> 动态规划将分解后的子问题理解为相互间属有联系,有重叠部分;

       c> 分治法通常利用递归答求解;

       d> 动态规划通常利用迭代法自底向上求解,但也能用具有记忆功能的递归法自顶向下求解

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值