算法研究
文章平均质量分 50
Lnho
发表是最好的记忆
展开
-
常见排序算法总结
1. 选择排序找到数组中最小的那个元素将它与数组的第一个元素交换位置再次,在剩余的元素中找到最小的元素,如此反复。2. 插入排序选择第二个元素。将它从后往前依次与之前的元素比较如果小于之前的元素,则交换两个元素位置,并继续从后往前比较之前元素,直至到第一个元素或者出现大于的情况位置如果大于之前的元素,则终止比较。并选择下一个元素,重复执行2-4步骤。适用场景对于部分有序的数据十分高原创 2017-11-23 00:50:20 · 630 阅读 · 0 评论 -
一张大图总结数据结构与算法
数据结构与算法知识结构思维导图: Prim算法:浅谈最小生成树的算法思路(一)Prim算法 Kruskal算法:浅谈最小生成树的算法思路(二)Kruskal算法 快速排序:JDK的快速排序算法实现DualPivotQuicksort原创 2016-03-09 18:16:31 · 6528 阅读 · 1 评论 -
浅谈最小生成树的算法思路(二)Kruskal算法
Kruskal算法是另外一种最小生成树的常见算法,理解起来,笔者觉得是比Prim算法要简单的。算法思路定义2个集合,集合P代表已经确定的边的集合,初始为空集。集合Q代表还未确定的边的集合,初始化为所有的边的集合。从所有图的所有边中选取一条最短的边原创 2016-02-16 22:46:17 · 1332 阅读 · 0 评论 -
浅谈最小生成树的算法思路(一)Prim算法
Prim算法是求最小生成树的一种常见算法,简单谈一下笔者自己的理解。算法思路设已经确定的点集为P,初始为空。设还未确定的点集为Q,初始为该图所有点的集合。设已经确定的边为X,初始为空。选取任意一点作为起始点,将该点添加到集合P中,并从Q中移除该点。从P中找到一个点A,从Q中找到一个点B,使得2点之间的路径AB的权值最小。将路径AB添加到X,将Q中的点B添加到集合P中,并从Q中移除该点。重复原创 2016-02-16 17:04:03 · 2896 阅读 · 0 评论 -
JDK的快速排序算法实现DualPivotQuicksort
从JDK7开始采用这种双Pivot的快速排序算法,这种算法通常会比传统单Pivot的快排算法效率更高。 具体流程如下: 1.需要排序的数组为a,判断数组的长度是否大于286,大于使用归并排序(merge sort),否则执行2。 2.判断数组长度是否小于47,小于则采用插入排序,否则执行3。 3.采用近似算法计算数组长度的1/7int seventh = (length >> 3) + (原创 2016-02-15 18:26:23 · 3339 阅读 · 0 评论