算法日记
monkey_rose
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
归并排序算法
想实现一个数组A[]的排序,可以将数组分成两个数组分别排序,有序的两个数组再按一定规则合成一个数组,很容易想到,最终的结果就是得到两个只含一个数字的数组,一定是有序的,那么通过递归,层层回推,得到有序的A[]。 算法的实现需要2个函数: void MERGE(int* A, int p, int q, int r){ //原创 2016-09-24 18:24:12 · 256 阅读 · 0 评论 -
堆排序算法
堆排序结合了插入排序和归并排序的优点,虽然不优于快速排序,但是有其独特的应用。 堆的基本结构是树,又称为二叉堆,分为最大堆和最小堆,两者都可以实现排序,此篇以最大堆为例介绍。 最大堆就是任意父节点的值不小于其子节点的值。原创 2016-09-28 09:32:09 · 319 阅读 · 0 评论 -
快排
快排是一种对冒泡改进的排序算法,他的平均的时间复杂度为O(nlog2n),最坏情况下可以达到O(n^2),当每次选择的标记数字都恰好为当前最大或最小,使得partition没有起到作用。直接上代码吧。 int partition(int l, int h, int* s) { int i = l; int j = h; int x = s[i]; while (i原创 2016-12-29 18:28:10 · 383 阅读 · 0 评论 -
三种求解最短路径的情况
图的问题中许多是关于最短路径的,这个问题情况又分为几种,这篇就我遇到过的三种情况分类讲一下,算法的解释我没有写的太详细,算法书和其他博文里面有很多。 1.有一种最简单的情况,就是图的各个边的权值相等,这时我们以起点进行广度优先搜索终点,就可以最终得到最短距离。 题目: Description 给定一个无向图,用0,1,2,...,n-1代表其n个顶点,求指定两个顶点之间的原创 2017-01-01 10:57:23 · 1094 阅读 · 0 评论
分享