读书笔记——数据结构(2)运行时间中的对数
2013-07-20 20:46
141 查看
某些分支算法将以O(logN)时间运行。
一般法则:
如果一个算法用常数时间(O(1))将问题的大小削减为其一部分(通常是1/2),那么该算法就是O(logN)。
另一方面,如果使用常数时间知识吧问题减少一个常数(如将问题减少1),那么这种算法就是O(N)的。
三个例子:
1.对分查找(二分查找)
给定一个整数X和整数A0,A1,……,AN-1,后者已经预先排序并在内存中,求使得Ai=X的下表i,如果X不在数据中,则返回i=-1。
计算最大公约数的欧几里德算法。
计算一个整数的N次幂
一般法则:
如果一个算法用常数时间(O(1))将问题的大小削减为其一部分(通常是1/2),那么该算法就是O(logN)。
另一方面,如果使用常数时间知识吧问题减少一个常数(如将问题减少1),那么这种算法就是O(N)的。
三个例子:
1.对分查找(二分查找)
给定一个整数X和整数A0,A1,……,AN-1,后者已经预先排序并在内存中,求使得Ai=X的下表i,如果X不在数据中,则返回i=-1。
int BinarySearch(const ElementType A[],ElementType X,int N) { int Low,Mid,High; Low=0; High=N-1; while(Low<=High) { Mid=(Low+High)/2; if(A[Mid]<X) { Low=Mid+1; } else if(A[Mid]>X) { High=Mid-1; } else { return Mid; } } return -1; }2.欧几里德算法
计算最大公约数的欧几里德算法。
unsigned int Gcd(unsigned int M,unsigned int N) { unsigned int Rem; while(N>0) { Rem=M%N; M=N; N=Rem; } return M; }3.幂运算
计算一个整数的N次幂
long int Pow(long int X,unsigned int N) { if(N==0) { return 1; } if(N==1) { return X; } if(IsEven(N)) { return Pow(X*X,N/2); } else { return Pow(X*X,N/2)*X; } }
相关文章推荐
- 读书笔记——数据结构(2)运行时间中的对数
- 【数据结构】对数运行时间算法(折半查找、最大公约、幂运算)
- 数据结构第二周项目3(1)--体验复杂度之两种排序算法的运行时间
- 运行时间的对数
- 数据结构_分别使用for循环和递归打印1-N的所有整数,比较运行时间
- 数据结构中运行时间算法
- 提出一种数据结构支持pop push 和findMin,并且每种操作的运行时间最坏为O(1)
- 关于运行时间中的对数
- 运行时间,常数,对数,指数,
- 算法运行时间中的对数
- 算法运行时间中的对数
- 运行时间为对数的经典三例子
- 提出支持栈的Push和Pop操作以及第三种操作FindMin的数据结构,其中FindMin返回该数据结构的最小元素 所有操作在最坏的情况下的运行时间都是O(1)
- 提出一种数据结构支持push和pop操作以及第三种操作findMin,返回最小值,所有操作均以O(1)最坏时间运行
- 《数据结构与算法分析》笔记2 运行时间中的对数
- 【算法与数据结构】关于代码运行时间复杂度的计算方法
- 测试一个函数的运行时间(C++)
- iOS后台运行延长时间
- 计算程序运行时间的函数clock()
- CCS 4.0 利用profile测试函数运行时间