c/c++ & algorithms
文章平均质量分 62
angelo_yz
这个作者很懒,什么都没留下…
展开
-
堆排序(大根堆)算法
struct ArrayElem{ int key;} *R;//建堆:将第k个元素为根的树调整成大根堆fixdown(ArrayElem *R, int k, int N){ while(2*k { j = 2*k + 1; if(j if(R[k].key >= R[j].key) break; swap(R[k],R[j]); k=j; }} Heap转载 2005-10-14 22:16:00 · 2042 阅读 · 0 评论 -
一个简单的Hash表算法 zz
一个简单的Hash表算法 关键字是一个整数。#define M 100 //表长度,一般选择为素数值int t[M]; //Hash tablevoid makenull(int t[]); //Hash表的初始化,为转载 2005-10-14 22:19:00 · 2548 阅读 · 0 评论 -
打造最快的Hash表(和Blizzard的对话)(转载,有删改)
先提一个简单的问题,如果有一个庞大的字符串数组,然后给你一个单独的字符串,让你从这个数组中查找是否有这个字符串并找到它,你会怎么做? 有一个方法最简单,老老实实从头查到尾,一个一个比较,直到找到为止,我想只要学过程序设计的人都能把这样一个程序作出来,但要是有程序员把这样的程序交给用户,我只能用无语来评价,或许它真的能工作,但...也只能如此了。最合适的算法自然是使用HashTable(原创 2005-10-15 18:02:00 · 9089 阅读 · 3 评论 -
堆、栈和堆栈
一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释转载 2006-11-01 10:33:00 · 5402 阅读 · 2 评论 -
关于C语言字符串数组
<v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">原创 2009-04-16 10:48:00 · 8784 阅读 · 0 评论 -
Binary Search Tree的LCA
In computer science, a binary search tree (BST) is a binary tree data structure which has the following properties:Each node (item in the tree) has a distinct value.Both the left and right subtr原创 2009-04-16 15:56:00 · 1032 阅读 · 0 评论 -
关于递归(recursion)的总结
recursion和iteration是解决问题的两种方法。递归方法具有程序短小,易读懂的特点。但是要写好它并不容易。要注意边界的条件。 1.反向打印字符串。算法:reverse(s) = reverse(s+1) + *s voidreverse(char* s){ char *p = s; if (NULL == s) return; if( *p!=/原创 2009-04-17 15:52:00 · 641 阅读 · 0 评论 -
c中变量的存储区和生存期
C中变量的存储区、生存期和作用域是非常容易弄错的地方。一般认为在c中分为这几个存储区:1. 栈 -- 有编译器自动分配释放 2. 堆 -- 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 3. 全局区(静态区) -- 全局变量和静态变量的存储是放在一块的, 初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 程序结束释放原创 2009-07-21 18:02:00 · 1478 阅读 · 1 评论