(略)学习笔记:《Offer来了(原理篇)》第5章 Java中的常用算法

5.9 其他算法

5.9.1 剪枝算法

剪枝算法属于算法优化范畴。在搜索算法的优化中,剪枝算法通过某种预判,去掉一些不需要的搜索范围,从直观上理解相当于剪去了搜索树中的某些“枝条”,故称剪枝。
剪枝优化的核心是设计剪枝预判方法,即哪些“枝条”被剪掉后可以缩小搜索范围,提高搜索效率而又不影响整体搜索的准确性。
如图所示为在二叉树的查找过程中提前判断元素 48不可能在左侧树中,将其剪枝以减少搜索范围。

在这里插入图片描述

5.9.2 回溯算法

回溯算法是一种最优选择搜索算法,按选优条件向前搜索,以达到目标。如果在探索到某一步时,发现原先的选择并不是最优或达不到目标,就退一步重新选择,这种走不通就退回再走的方法叫作回溯法,而满足回溯条件的某个状态的点叫作回溯点。
如图所示为经历了[10,4,5,8]的线路后未找到需要的数据,则回溯到根节点以另一条线路重新查找。

在这里插入图片描述

5.9.3 最短路径算法

最短路径算法:

  • 迪杰斯特拉Dijkstra算法
  • 贝尔曼-福特算法Bellman-Ford算法
  • 弗洛伊德Floyd算法
  • SPFA算法

最短路径算法指从某顶点出发沿着图的边到达另一顶点,在途中可选的路径中各边上权值之和最小的一条路径叫作最短路径。
如图所示为从起点A到终点F有 3条路径,路径 1为:[A,B,D,C],路径 2为:[A,F],路径3为:[A,E,F]。在各条边权重相等的情况下,路径2显然为最短路径。

在这里插入图片描述

5.10 二叉树遍历算法

二叉树遍历算法:

  • 前序遍历:递归/栈(类比图的深度优先遍历)
  • 中序遍历:递归/栈
  • 后序遍历:递归/栈
  • 层序遍历:队列(类比图的广度优先遍历)

实现

二叉树遍历算法

5.1 二分查找算法

类比二叉查找树的搜索,时间复杂度:O(logn)

实现

二分查找算法

5.2-5.8 排序算法

十大排序算法:

  • 冒泡排序、快速排序
  • 选择排序、堆排序
  • 插入排序 → 希尔排序
  • 桶排序、计数排序 → 基数排序
  • 归并排序

实现

学习笔记:《程序员小灰》

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值