算法
文章平均质量分 55
sun_gao
这个作者很懒,什么都没留下…
展开
-
linux c 库函数 qsort 和bsearch
函数原型:void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *,const void *));base:要查找数组的首地址nmemb:数组元素个数size:元素大小compare:回调函数,指明两个元素比较的方法。例子:#include原创 2012-03-10 22:24:35 · 1131 阅读 · 1 评论 -
顺序搜索
来自于一个太大范围的关键字是不能作为索引的。符号表实现的一个简单方法是把数据项按照顺序连续地存放在数组中。当要插入一个新的数据项时,就像插入排序中所做的那样,将较大的元素移动一个位置,把新的数据项放进数组中;当要进行搜索时,我们顺序地查找数组。因为数组是有序的,当遇到一个大于搜索关键字的关键字时,我们即可报告搜索失败。基于数组的实现:static Item *st;static int原创 2012-03-11 10:33:21 · 656 阅读 · 0 评论 -
二分搜索
二分搜索的思想是把数据项集合分成两部分,确定搜索关键字属于哪一个部分,然后集中处理那一部分。划分数据项的一种合理方式是保持数据项有序,然后在有序数组中使用下标来界定所要处理的那一部分数组。下面给出实现: #include int* search( int a[], int l, int r,int key);int main( int argc, char* arg原创 2012-03-11 20:57:51 · 450 阅读 · 0 评论 -
关键字索引搜索
假定关键字的值是不同的小整数。在这种情况下,最简单的搜索算法是对存储在数组中的数据项进行排序,并按关键字进行索引。下面给出这种思想的伪代码:NULLitem 表示空项Item 表示数据项的类型。 static Item *st;static int M = maxKey; //最大项 void STinit( int maxN ){ Inti;原创 2012-03-10 17:10:30 · 902 阅读 · 0 评论 -
二叉搜索树
二叉搜索树是一棵二叉树,它的每个内部节点都关联一个关键字,并具有以下性质:任意节点的关键字大于或等于该节点左子树中所有节点的关键字,小于等于该节点右子树中所有节点的关键字。实现:#include #include struct Tree{ int item; structTree *l; structTree *r;}; void原创 2012-03-12 23:34:49 · 371 阅读 · 0 评论 -
二叉搜索树的根节点插入
在标准二叉搜索树中,每个新节点都会插入到树的底层的某个地方,替换某个外部节点。这种状态并不是一个绝对的要求;也可以从根节点插入,方法是先插入到相应外部节点然后在通过旋转,转到根节点,下面给出实现:#include #include struct Tree{int item;struct Tree* l;struct Tree* r;};struc原创 2012-03-15 22:03:21 · 778 阅读 · 0 评论