
数据结构和算法
文章平均质量分 77
steven30832
程序员,还在上学
展开
-
快速排序
快速排序的重点在于Partition过程的实现,该过程主要是将数组分为三段,即:小于key值的一段,key值,大于key值的一段。这里写了两种Partition过程的方式 Partition方式一的代码如下: int Partition(int s[],int p,int r){ /*对s[p...r]进行Partition过程 *以s[p]的值为基准,将数组分为两个原创 2010-04-12 16:03:00 · 543 阅读 · 0 评论 -
最大堆实现对大优先队列
/* *利用最大堆实现一个最大优先队列*/#include using namespace std; int *queue; //队列int const maxLength = 5; //队列最大长度int curLength = 0; //当前队列长度 void MAX_HEAPIFY(int*,int,int);void MAX_HEAP_BUIL原创 2010-04-05 12:12:00 · 542 阅读 · 0 评论 -
堆排序
#include #include #include using namespace std;int *A;int const LEN = 10; void MAX_HEAPIFY(int a[],int i,int len);void BUILD_MAX_HEAP(int a[],int len);void HEAP_SORT(int a[],int len)原创 2010-04-05 09:43:00 · 322 阅读 · 0 评论 -
常数时间初始化向量
来自《编程珠玑》1.6.9使用更多的空间来换取更少的运行时间存在一个问题:初始化空间本身需要消耗大量的时间。说明如何使用一种技术,在第一次访问向量的某项的时候将其初始化为0。提示:采用空间换时间的方式,并且空间占用和向量长度成线性关系。这种方式仅在【空间很廉价】【时间很昂贵】【向量很稀疏】的时候有用。一直没有想到这个问题怎么处理,后来上网搜了一下。发现了答案。先看答案:原创 2012-11-29 15:10:40 · 980 阅读 · 0 评论 -
最长公共子串(连续)问题
动态规划有一个经典问题是最长公共子序列,但是这里的子序列不要求连续,如果要求序列是连续的,我们叫公共子串,那应该如何得到这个串呢?最简单的方法就是依次比较,以某个串为母串,然后生成另一个串的所有长度的子串,依次去母串中比较查找,这里可以采用先从最长的子串开始,减少比较次数,但是复杂度依然很高!然后重新看一下这个问题,我们建立一个比较矩阵来比较两个字符串str1和str2原创 2012-12-05 15:55:32 · 22094 阅读 · 9 评论