- 博客(6)
- 收藏
- 关注
原创 链表
关键词:头指针、头结点、循环链表、双向链表 头指针:头指针指向链表中的第一个结点 带头结点的链表:无论链表是否为空,头结点始终存在,头结点中的值域与链表元素无关。头指针始终指向头结点 带头结点的链表的好处:不带头结点的链表,头指针是指向头结点的,在对链表进行删除、插入操作时,需要检测头结点是否发生了变化。而采用带头结点的
2012-02-29 13:38:21 776 1
原创 高效率的取幂运算
计算X^N的常见算法是使用N-1次乘法自乘,时间复杂度为O(n)。使用下面的递归算法更好,时间复杂度为O(logn): template T Pow(T x, unsigned int N) { if (0==N) { return 1; } else if (1==N) { return x; } else if (0==N%2) { return Pow(x*x,
2012-02-28 15:21:07 1996 3
原创 欧几里德算法
求两个数的最大公因数,如gcd(50, 15)=5 时间复杂度:O(logn) unsigned int Gcd(unsigned int M, unsigned int N) { unsigned int temp; //令M>=N if (M<N) { temp = M; M = N; N = temp; } while(N>0) { temp = M % N
2012-02-28 14:49:04 558 3
原创 最大子序列问题及其求解
问题说明:给定整数(可能有负数),求的最大值(为方便起见,如果所有整数均为负数,则最大子序列和为 0 )。 三种实现方法: 方法一:O(n^2) template T MaxSubSequenceSum_1(const T A[], int length) { T thisSum = 0; T maxSum = 0; for(int i=0; i<length; ++i) {
2012-02-28 14:29:39 464 1
原创 递归
定义:一个函数用它自己来定义时就称为递归 递归的四条基本法则: 1.基准情形(base case):必须总要有某些基准的情形,它们不用递归就能进行求解 2.不断推进(making progress):对于那些需要递归求解的情形,递归调用必须总能够朝着产生基准情形的方向推进 3.设计法则(design rule):假设所有的递归调用都能运行 4.合成效益法则(compound intere
2012-02-28 12:37:16 2061
原创 查找算法归纳
静态查找算法:对表中的记录只进行查找操作 顺序查找: 时间复杂度:O(n) 优点:对数据集合中元素的有序性、存储结构都没有任何要求 缺点:查找效率低 二分查找: 时间复杂度:O(logn) 优点:查找效率高 缺点:要求数据集合中的元素是顺序存储且有序的 分块查找: 将主表分成若干个子表,为每个子表建立一个索引值,组成一个索引表,索引表要求是有序的。查找分为两个过程:
2012-02-28 12:28:54 922
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人