Dijkstra算法,中文叫狄克斯特拉算法,在地图中寻找两个地点之间的最短或者最快路径非常有用。狄克斯特拉算法是一个贪婪算法,也就是在处理过程中...
广度优先搜索和深度优先搜索是在图的基础上来讨论的,它们都是图的顶点的遍历方式。下面我们一个个来研究一下。 两种遍历方式的讲解,我们都已下面这个图...
图是由顶点和顶点之间边组成的一种数据结构。如下图所示: 加权图 在加权图中,每一条边都有一个权重,我们可以利用这个权重来计算除图中两个顶点的最小...
归并排序算法是一个效率很高的排序算法,时间复杂度为 O(n log n)。它的算法思想是先分组,各小组排好序后,再把结果合并。 原理解析 以下面...
时间复杂度为O(n^2)的排序算法性能并不好,但作为刚入门算法的同学来说,还是有必要学习一下的。这里我们会讲到三种排序算法:1)冒泡排序;2)选...
二分查找是高效搜索算法中的一员,时间复杂度为O(log n)。使用搜索算法前,需要满足两个条件: 集合中的元素必须可以使用索引直接访问,在 Sw...
在【数据结构与算法 - Swift实现】04 - 队列 (Queue)文章里面,我们已经讲过队列,采用先进先出的规则。这边文章我们要学习的是优先...
堆,其实是一个完整的二叉树(除了叶节点外,其他节点都有左右子节点)。堆有以下两种形式: 最大堆:根部元素的值最大,越往下,值越小。例如 最小堆:...
AVL树,第一个自平衡的二叉搜索树,是Adelson-Velsky 和 Evgenii Landis 在1962年提出的,所以 AVL来自于他们...
文集作者