随笔分类 - 算法
常见算法的描述与代码实现(java)
摘要:上篇博客中讲解了九大内部排序算法,部分算法还提供了代码实现,但是那些代码实现都是基于数组进行排序的,本篇博客就以链表排序实现几种常见的排序算法,以飨读者。 快速排序的链表实现 算法思想:对于一个链表,以head节点的值作为key,然后遍历之后的节点,可以得到一个小于key的链表和大于等于key的链表
阅读全文
摘要:排序算法分类 选择排序:简单选择排序、堆排序 插入排序:直接插入排序、二分插入排序和希尔排序 归并排序:归并排序 交换排序:冒泡排序、快速排序 基数排序:基数排序 算法时间和空间复杂度分析 图1 性能分析 性能具体分析 O(n^2):直接插入排序,简单选择排序,冒泡排序。 在数据规模较小时(9W内)
阅读全文
摘要:前言 在比较排序的算法中,快速排序的性能最佳,时间复杂度是O(N*logN).因此,在使用比较排序时,时间复杂度的下限就是O(N*logN)。而桶排序的时间复杂度是O(N+C),因为它的实现并不是基于比较实现的,而是基于映射函数实现的。 桶排序 桶排序工作的原理是将数组分到有限数量的桶子里。每个桶子
阅读全文
摘要:Floyd算法是一种用于寻找给定的加权图中多源点之间最短路径的算法,算法流程如下所示: 1:从任意一条单边路径开始。所有两点之间的距离是边的权,如果两点之间没有边相连,则权为无穷大。 2:对于每一对顶点 u 和 v,看看是否存在一个顶点 w 使得从 u 到 w 再到 v 比已知的路径更短。如果是更新
阅读全文