文章目录

  • 5.9 其他算法
  • 5.9.1 剪枝算法
  • 5.9.2 回溯算法
  • 5.9.3 最短路径算法
  • 5.10 二叉树遍历算法
  • 5.1 二分查找算法
  • 5.2-5.8 排序算法

5.9 其他算法

5.9.1 剪枝算法

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

深度学习剪枝后处理 什么叫剪枝算法_搜索

5.9.2 回溯算法

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

深度学习剪枝后处理 什么叫剪枝算法_搜索_02

5.9.3 最短路径算法

最短路径算法:

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

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

深度学习剪枝后处理 什么叫剪枝算法_数据结构_03

5.10 二叉树遍历算法

二叉树遍历算法:

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

实现

二叉树遍历算法

5.1 二分查找算法

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

实现

二分查找算法

5.2-5.8 排序算法

十大排序算法:

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

实现

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