今天学习了算法导论上的归并排序算法,而且完毕了在纸上写出伪代码,曾经就学过归并可是理解的不够透彻。以 前还一直困惑:为什么明明归并排序比快排的时间复杂度更稳定。为什么库函数不用归并而用快排。如今知道原因了,由于归并排序必须开额外的空间。并且空间开销还比較大,以下介绍算法: 首先,归并排序用到了分治的 ...
分类:
编程语言 时间:
2017-06-24 20:53:07
阅读次数:
124
归并排序里运用到算法里很重要的一个思想——分治法:将原问题分解为几个规模较小但类似于原问题的子问题——《算法导论》。在每一层递归中都有3个步骤: 1.分解问题 2.解决问题 3.合并问题的解 举例待排序数组:{6, 5, 3, 1, 7, 2, 4},将它原始序列做分解。 可以经过不断的递归分解可以 ...
分类:
编程语言 时间:
2017-06-24 09:59:22
阅读次数:
153
计数排序:不须要比較就能得出排序的顺序__比如。本章的计数排序、基数排序、桶排序 比較排序:须要进行比較才干得出排序的顺序__比如,本章的堆排序、高速排序(本质是插入排序)、插入排序 代码清单:计数排序__完美演绎下标的作用 public class Count_Sort { //接收须要排序的数组 ...
分类:
编程语言 时间:
2017-06-15 21:57:57
阅读次数:
152
关于严格来说,本文题目应该是我的数据结构和算法学习之路,但这个写法实在太绕口——况且CS中的算法往往暗指数据结构和算法(比如算法导论指的实际上是数据结构和算法导论),所以我认为本文题目是合理的。假设你使用的是手机或平板设备,那么请点击以下的链接以获得更好的阅读效果:http://zh.lucida. ...
分类:
编程语言 时间:
2017-06-14 11:39:06
阅读次数:
720
教你透彻了解红黑树 作者:July、saturnman 2010年12月29日 作者:July、saturnman 2010年12月29日 本文参考:Google、算法导论、STL源码剖析、计算机程序设计艺术。 推荐阅读: 一、红黑树的介绍 先来看下算法导论对R-B Tree的介绍:红黑树,一种二叉 ...
分类:
其他好文 时间:
2017-06-13 16:46:29
阅读次数:
283
今天看了算法导论里面的动态规划(DP),有个有意思的问题:钢条切割来获取最大的收益。 书中讲到了几种求解方法,包括递归求解法、备忘录DP解法、自底向上的解法以及对解的重构。书中给出不同解法的伪码,刚好需要练习c++,就有c++来实现DP求解钢条切割问题。 【递归求解】 【自底向上DP重构解】 自底向 ...
分类:
编程语言 时间:
2017-06-12 00:38:17
阅读次数:
273
最近学习了二叉搜索树中的红黑树,感觉收获颇丰,在此写一篇文章小结一下学到的知识,顺便手写一下Java代码。 1.引言 先来讲讲什么是二叉搜索树,二叉搜索树有如下特点:他是以一颗二叉树(最多有两个子结点)来组织的,对于树中的某个节点,其左子树的所有元素均小于该节点,其右子树的元素均大于该节点。我们知道 ...
分类:
编程语言 时间:
2017-06-11 10:22:56
阅读次数:
278
用了几个月磕磕绊绊的总算把《算法导论》一书看完了,在此写篇博客总结一下学习到的知识。 首先先放上《算法导论》的思维导图: 由于本人的理解能力有限,故部分较难懂的内容没有加入到该思维导图中。 1.排序 排序问题是我们日常生活中经常遇到的一个问题,因此算法导论也把排序作为整个算法介绍的入门篇。在这么多排 ...
分类:
编程语言 时间:
2017-06-11 10:20:32
阅读次数:
339
最长公共子序列:一个序列 S 。假设各自是两个或多个已知序列的子序列,且是全部符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。 其核心非常easy: 这样,构造子结构就比較简单了: if(str1[i - 1] == str2[j - 1]) m[i][j] = m[i - 1][j ...
分类:
编程语言 时间:
2017-06-09 16:26:25
阅读次数:
139
关于严格来说,本文题目应该是我的数据结构和算法学习之路,但这个写法实在太绕口——况且CS中的算法往往暗指数据结构和算法(比如算法导论指的实际上是数据结构和算法导论),所以我认为本文题目是合理的。假设你使用的是手机或平板设备,那么请点击以下的链接以获得更好的阅读效果:http://zh.lucida. ...
分类:
编程语言 时间:
2017-06-05 22:16:15
阅读次数:
311