数据结构与算法
Ace_Yom
关注方向: 计算机视觉-行人检测、跟踪
展开
-
merge sort(归并排序)
merge sort(归并排序) 是一种采用分治策略的排序方法。最坏时间复杂度为 O(nlgn) 要分析算法运行的时间复杂度,关键的就是要列出分治过程中的递归式:然后,复杂度的估算可以使用递归树方法,也可以直接使用主定理来证明。详情请参考《算法导论》我实现的C++ 版本代码如下所示:/* MAXN为A的长度上原创 2015-08-08 21:41:24 · 578 阅读 · 0 评论 -
Stack--栈
最近复习到栈。这是一种小巧有用的数据结构,算是功能特化的链表。一句话概括:LIFO(last in first out)可以使用1)链式实现 也可以使用2)顺序实现。链表的 "addLast" 和 " removeLast" 操作就相当于栈的 "push" 和 "pop"操作。1)链式实现的话,各节点占用的内存空间不一定连续,我前面的一篇博文:"LinkedList--链表" 的代原创 2015-08-18 14:04:15 · 483 阅读 · 0 评论 -
线索二叉树
概念: 对于二叉树而言,在一种遍历次序(前后中)里,每一个结点都有一个前驱和一个后继,这种信息叫做线索。一棵二叉树有 n+1个空链域(2n个链域,n-1个branch,2n-(n-1) = n+1 个空链域)。规定:如果一个结点的左儿子为空,就让左儿子的指针域存储前驱;如果右儿子为空,就让右儿子的指针域存储后继。具体是儿子还是线索,标个tag就行了。 遍历一棵普通二原创 2015-09-08 10:42:21 · 740 阅读 · 0 评论 -
LinkedList--链表
最近复习到链表(LinkedList),一般来说共有大概有两种实现方式:1. 数组实现 和 2. 链式实现。 其中,链式实现又可分为两种:1. 依托数组的链式实现---静态链表(请参考[2]) 2. 直接链式实现 我仅使用了直接链式实现,代码如下。其他的实现方式,大家不妨自己尝试下吧。(注:代码头文件中的函数原型参考自[1],然函数的实现是我本人写的,原创 2015-08-17 16:28:19 · 1097 阅读 · 0 评论 -
Circular Queue--循环队列
队列大家见得很多了,形式也比较简单,就是一个特化的链表,它的enqueue、dequeue操作相当于链表的addLast、removeFirst操作。关于链表的实现,可以查看我的另一篇博文--"LinkedList--链表"。下面仅讨论一个稍微复杂点的情况--循环队列。 循环队列的就是用循环数组来实现队列,有一个问题需要解决:在普通的非循环队列中,rear == front 说明队原创 2015-08-21 11:21:30 · 2345 阅读 · 0 评论 -
树和森林和二叉树
树的存储结构双亲表示法: 数组存储,每个结点中存储着其父亲结点在数组中的索引。孩子表示法: 1)一个结点中存储着自己的数据域指针和指向其所有孩子的指针 2)由于1)会导致有大量儿子的结点存储的信息量太大,故改为数组中的一个结点存储着自己的数据域指针和指 向其第一个孩子的指针。然后非数组结点则有一个指针原创 2015-09-08 21:04:55 · 621 阅读 · 0 评论 -
非递归遍历二叉树--前序、中序、后序
使用递归遍历树,调用的是系统分配给程序的隐式栈,下面以伪码的形式介绍前序、中序、后序遍历二叉树的非递归方法。前序遍历:Status preOrder(BiTree T, Status (*Visit)(TElemType e)) { InitStack(S); p = T; while(p || !StackEmpty(S)) { while(p) { visi原创 2015-09-08 10:29:41 · 694 阅读 · 0 评论 -
字符串模式匹配--KMP之美
模式匹配: 给定字符串,要求在该字符串中找到所有匹配一个模式串的子串(一般是返回子串在字符串中的开头位置)。这里把问题简化一下--在该字符串中找到第一个匹配对应模式串的子串即可。要找出剩下的匹配子串,只需往后沿用相同的算法即可。问题描述: 给定主串S、模式串P,主串S中的一个索引pos,要求使用一种算法,找到主串S的从索引pos开始的,第一个匹配模式串P原创 2015-08-23 14:00:45 · 650 阅读 · 0 评论 -
selection sort(选择排序)
selection sort(选择排序) 是一种很常见的O(n^2)的排序方法。下面给出算法的伪码及时间复杂度分析伪代码:如上图所示,伪码的每一步后面都有一个基本运算执行次数的统计。步骤6-7的执行次数与输入的数组有关。可以证明:当输入数组为逆序的时候,为worst case,k = 当输入数组为顺序的时候,为best case,k原创 2015-08-08 21:50:16 · 698 阅读 · 0 评论 -
稀疏矩阵的存储格式(Sparse Matrix Storage Formats)
此博文转载自: http://blog.csdn.net/anshan1984/article/details/8580952#comments稀疏矩阵的存储格式(Sparse Matrix Storage Formats)Sason@CSDN 对于很多元素为零的稀疏矩阵,仅存储非零元素可使矩阵操作效率更高。现有许多种稀疏矩阵的存储方式,但是多数采用相转载 2017-01-07 16:23:01 · 854 阅读 · 0 评论