C算法(第一卷)
fhxd
这个作者很懒,什么都没留下…
展开
-
56(p84)
#include"stdio.h"#define N 1000void main(){char a[N];int i = 0;char tempchar;int countchar[256];memset((void *)countchar, 0 ,256 * sizeof(int));for ( ;i {if ((tempchar = getchar(原创 2013-04-27 22:09:49 · 779 阅读 · 0 评论 -
第13章 平衡树
第13章 平衡树13.1 平衡树的构建二叉搜索树(BST)算法对于多种应用都能很好地工作,但是在最坏情况下,都存在性能低下的问题。一种在BST里产生较好平衡的方法是,周期性地再平衡二叉搜索树。用这种方法我们可以让大多数的二叉搜索树在线性时间里完全平衡。这样的再平衡可能改善针对随机键的性能,但它并不能保证,在动态符号表里避免二次性最坏情况的性能。一方面,再平衡运算之间的键序列的插入时间可原创 2013-10-16 15:53:26 · 699 阅读 · 0 评论 -
第16章 外部搜索
第16章 外部搜索适用于访问庞大文件中项的搜索算法具有极其重要的实际意义。搜索是庞大数据集的基本运算,在许多计算机环境中也必定会耗用大量的资源。16.1游戏规则我们做出基本假定:数据的顺序访问比非顺序访问开销少得到。我们的模型是,将用于实现符号表的任何内存工具都看为分成多页:即能被磁盘硬件有效访问的连续信息块。每个页容纳许多项;我们的任务是组织页内的项,只通过少数几页就可以访问任何项。原创 2013-10-16 15:57:17 · 971 阅读 · 0 评论 -
第15章 基数搜索
第15章 基数搜索 +一些搜索方法的处理办法是一次一个小片段地检查搜索键,而不是每一步在键之间进行全面比较。这些方法称做基数搜索方法(radix-search mothod),它们的运算方式与基数排序方式完全类似。当搜索键片段易于访问时,这些方法非常有效,而且它们可以为各种实际搜索任务提供高效的解决方案。根据上下文的不同,键可能为字(定长字节序列)或者是串(变长字节序列)。我们将字键看作为原创 2013-10-16 15:54:51 · 1290 阅读 · 0 评论 -
算法分析的基本模型
第2章 算法分析原理2.1 函数增长类型(2013.7.23)函数增长类型分为以下类型:2.1.1 1(常数关系) :大部分程序的大部分指令执行一次,或者至多执行多次。如果程序的所有指令都具有该性质,我们就说程序的运行时间为常数。具有该时间复杂度的算法有:l 基于键值索引的搜索算法,l Hash法的理想情况。2.1.2 logN(对数关系) :当程序的运行时间具原创 2013-09-29 10:26:51 · 1395 阅读 · 0 评论 -
后缀数组(不完善)
前天在看后缀数组相关的内容时,看了罗穗骞的论文,看了2天才基本看懂了论文中的2倍增法。但是还是没有理解完全。现在先做一个笔记,以便以后参考。(说实话,我觉得trie, p - trie什么的都没这么伤脑筋),以下是我在网上down的一个示例程序。#include #include #include using namespace std; int cmp(int *r,int a,in原创 2013-08-24 21:16:54 · 618 阅读 · 0 评论 -
快递员也使用LSD算法
今天看LSD基数排序算法,该算法对一个数(基数选择为2)或者一个字符串(基数选择为128或者256或者10)进行表述位的从右到左进行排序,最后得到一个有序序列,但是要注意要使用稳定的排序的算法,否则将不能得出正确结果。例如带排序的序列如下:1377206888913772068878137720668801377206888313772068882原创 2013-06-30 16:53:50 · 1809 阅读 · 0 评论 -
C算法第一卷(第三版)纠错
下面是我在看C算法第一卷时发现的一些bug,如有不正确之处请各位网友指出,不胜感激。(之后bug陆续更新)*老外在用数组时一般都喜欢把数组的第一个元素作为标示变量或者直接就不用。比如:p317 的#define bin(A) 1 + count(A)就是这样C算法第一卷bug页数错误描述 解决方式 p311quicksortB中的原创 2013-06-28 23:55:59 · 1147 阅读 · 0 评论 -
链表头结点作用
数据结构中,在单链表的开始结点之前附设一个类型相同的结点,称之为头结点。头结点的数据域可以不存储任何信息,头结点的指针域存储指向开始结点的指针(即第一个元素结点的存储位置)。作用1、防止单链表是空的而设的.当链表为空的时候,带头结点的头指针就指向头结点.如果当链表为空的时候,单链表没有带头结点,那么它的头指针就为NULL.2、是为了方便单链表的特殊操作,插入在表头或者删除第转载 2013-05-05 10:47:57 · 734 阅读 · 0 评论 -
57(p84)
#include#include#define N 1000void main(){ char a[N]; char tempchar; int i = 0; int j = 0; int flag = 1; memset(a, 0, N * sizeof (char)); for (i = 0; i { if ((tempchar =原创 2013-04-27 23:12:49 · 128 阅读 · 0 评论 -
62(p84)求已知串中最长空格序列的长度
求已知串中最长空格序列的长度,要求尽量少检查串的字符。提示:空格序列长度增大,程序将变得更快。#include"stdio.h"#define N 1000void main(){int i = 0;char a[N];char tempchar;int spaceCount = 0;int spaceCountOld = 0;int tempint = 0;int cyc原创 2013-04-28 11:52:33 · 1018 阅读 · 0 评论 -
第12章 符号表和二叉搜索树
12.1 定义12.1.1 符号表符号表(symbol table):符号表是一种具有键的项数据结构,它支持两种基本运算:插入新项与返回包含已知键的项。符号表有时又称做字典(dictionary)符号表的操作如下:Void STinit(int);//初始化Int STcount();//返回项计数Void STinsert(Item);//添加新项Item S原创 2013-10-16 15:47:24 · 1230 阅读 · 0 评论