随笔分类 -  算法

算法设计和数据结构学习_6(单链表的递归逆序)
摘要:单链表的逆序方法有很多种,求职过程中会碰到类似的题。比如进栈出栈;变量链表放入数组后利用数组的逆序重构链表;遍历链表时每次访问的节点都指向它的前节点;递归调用等。本次实验是用递归的方法实现单链表的逆序,网上有很多类似的code. 这次实验主要要注意的是指针引用的使用,要充分理解引用是个别名,指针的引用可以参考其它网友的一篇博文:指针的引用 实验内容是先构造一个随机指定长度的单链表,将其输出,然后逆序后输出。 代码如下:// reverse_list.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #inc 阅读全文
posted @ 2013-07-27 13:15 tornadomeet 阅读(4855) 评论(0) 推荐(0) 编辑
算法设计和数据结构学习_4(《数据结构和问题求解》part4笔记)
摘要:前言: 数据结构这种东西,快速看了也只能概念上多理解了点,关键还是后续实践中的使用。好吧,本节依旧是data structures and algorithm analysis in c++ (second edition)中的笔记蜓点水般的笔记,书中第4部分的笔记,第3部分内容暂时先跳过(那是一些具体的应用例子)。本次的内容有栈和队列,链表,树,搜索二叉树,hash表,二叉堆。其中的队列,链表比较简单,树,二叉堆和hash表比较难。 Chap16: 如果类的数据成员是first-class(比如vector)的,则针对它的Big-Three会自动实现,不需要再去完成它。如果要实现c... 阅读全文
posted @ 2013-06-11 22:37 tornadomeet 阅读(2175) 评论(0) 推荐(1) 编辑
算法设计和数据结构学习_3(《数据结构和问题求解》part2笔记)
摘要:前言: 本节是data structures and algorithm analysis in c++ (second edition)中第2大部分的随手笔记,主要内容有算法复杂度分析,标准模板库介绍,递归思想和算法,常见的排序算法及其分析,随机数产生器和随机算法等。 Chap6: 一个算法的复杂度与输入数据量的大小,算法本身,编译器优化性能,所运行机器硬件的性能,算法本身等因素相关。从这些方面来看,即使是已经确定的2个算法F和G,我们也不能说2个算法的运行时间永远满足F(N)=G(N). 一是当N比较小时,两者的相差太小以至于感觉不出来,二是当N大到一定程度时,F(N)和G(N)... 阅读全文
posted @ 2013-06-04 20:40 tornadomeet 阅读(2253) 评论(0) 推荐(0) 编辑
算法设计和数据结构学习_2(常见排序算法思想)
摘要:一般约定我们是按照从小到大的顺序排序。按照向量的形式来参考排序中数组元素的相对位置,行向量中最左边为数组的第一个元素,且称为前面。列向量中最上面的元素为数组的第一个元素,也是称为前边。对常见的排序算法的思想要有个认识,比如说:冒泡排序,选择排序,插入排序,快速排序,shell排序,堆排序,归并排序,基排序。算法的稳定性是看原先数据中相同的元素值的顺序在排序后是否改变了?如果依旧保持不变,则说明该算法是稳定的。比如说,选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。选择排序是每次找到数据中最大的或者最小的数,然后和第一个数交换,每 阅读全文
posted @ 2013-04-18 00:04 tornadomeet 阅读(3358) 评论(0) 推荐(0) 编辑
算法设计和数据结构学习_1(一道堆排序作业题)
摘要:前言 这时上次学妹课程的一道作业题,我花了点时间做了下,其题目内容为: 试写一程序,可以对一二元树(binary)进行堆积排序(heap sort) (a)使用者可自己决定输入二元树的节点个数 (i)node数不超过50 (b)节点值由随机方式产生,并印出随机设值结果 (i)以时间复杂度O(n)的方式设值 (ii)假设值不可重复 (iii)最大值不可大于node数 (例如node数为9,因此最大值为9) (c)使用者可决定使用MAX-HEAP或者是MIN-HEAP来排序 (d)须将重建堆积得过程印出,以及最后输出排序结果 Sample Output: 后面在网上查了下... 阅读全文
posted @ 2012-11-07 16:11 tornadomeet 阅读(3405) 评论(0) 推荐(1) 编辑
HMM学习笔记_2(从一个实例中学习HMM前向算法)
摘要:HMM算法想必大家已经听说了好多次了,完全看公式一头雾水。但是HMM的基本理论其实很简单。因为HMM是马尔科夫链中的一种,只是它的状态不能直接被观察到,但是可以通过观察向量间接的反映出来,即每一个观察向量由一个具有相应概率密度分布的状态序列产生,又由于每一个状态也是随机分布的,所以HMM是一个双重... 阅读全文
posted @ 2012-03-24 16:16 tornadomeet 阅读(32296) 评论(14) 推荐(6) 编辑
HMM学习笔记_1(从一个实例中学习DTW算法)
摘要:DTW为(Dynamic Time Warping,动态时间归准)的简称。应用很广,主要是在模板匹配中,比如说用在孤立词语音识别,计算机视觉中的行为识别,信息检索等中。可能大家学过这些类似的课程都看到过这个算法,公式也有几个,但是很抽象,当时看懂了但不久就会忘记,因为没有具体的实例来加深印象。 这次主要是用语音识别课程老师上课的一个题目来理解DTW算法。 首先还是介绍下DTW的思想:假设现在有一个标准的参考模板R,是一个M维的向量,即R={R(1),R(2),……,R(m),……,R(M)},每个分量可以是一个数或者是一个更小的向量。现在有一个才测试的模板T,是一个N维向量,即T... 阅读全文
posted @ 2012-03-23 11:29 tornadomeet 阅读(62576) 评论(24) 推荐(10) 编辑


阿萨德发斯蒂芬