数据结构与算法学习笔记(一)几个低时间复杂度的算法
来源:互联网 发布:aster数据 编辑:程序博客网 时间:2024/06/14 16:56
几个低时间复杂度的算法:
(1)最大子序列和问题
给定整数A[0]~A[N-1],可能有负数,求SUM(k=i;j)A[k]的最大值。
int MaxSubsequenceSum(const int A[];int N){ int ThisSum=0,MaxSum=0; for(int i=0;i<N;i++){ ThisSum += A[i]; if(ThisSum > MaxSum){ MaxSum = ThisSum; }else if(ThisSum < 0){ ThisSum = 0; } } return MaxSum;}
时间复杂度仅为O(N)
(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;}
时间复杂度为O(logN)
不用考虑M和N谁大的问题,因为多一次循环就会调整为M大N小。
(3)幂运算
求一个整数的N次幂的常规思路是使用N-1次自乘,这样时间复杂度是O(N)
使用递归算法会更好:
N为偶数时:
N为奇数时:
long int Pow(long int x,unsigned int N){ if(N == 0) return 1; if(N == 1) return x; if(N%2 == 0) return Pow(x*x,N/2); else return Pow(x*x,(N-1)/2)*x;}
时间复杂度为O(logN)
实际上N==1的这条代码也可以省略,因为在N=1的情况下,最后一行做了同样的工作。
0 0
- 数据结构与算法学习笔记(一)几个低时间复杂度的算法
- 数据结构与算法学习笔记——算法的时间和空间复杂度
- 数据结构与算法之时间复杂度(笔记)
- 数据结构与算法笔记之--时间复杂度和空间复杂度
- 常见的数据结构与算法时间复杂度
- 数据结构与算法 -- 时间复杂度
- 数据结构入门学习系列-2(算法的时间复杂度)
- 数据结构(四)算法的时间复杂度
- 数据结构-算法的时间复杂度
- 数据结构之算法与算法时间复杂度
- 算法与数据结构 其一 算法时间复杂度
- 数据结构(算法的时间复杂度和空间复杂度)
- 【数据结构与算法】三 █算法复杂度█ 一 时间复杂度
- 数据结构算法笔记 lesson2 算法 时间复杂度和空间复杂度
- 数据结构与算法一:算法复杂度分析
- 《大话数据结构》读书笔记一:算法的时间复杂度
- 数据结构-算法-时间复杂度
- 数据结构笔记-算法时间复杂度分析
- Unity定时器Timer类
- Python学习--面向对象编程(基础篇)
- AutoCompleteTextView 简单设置
- putty实现免秘钥登录
- jenkins集成测试报告
- 数据结构与算法学习笔记(一)几个低时间复杂度的算法
- ReactJS修炼之路(五):Immutable.js的使用及setState的一个误区
- 智能控制实验室项目展示与学习系统
- NLP基础知识
- javaBean的序列化
- protobuf二:第一个c++示例
- FreeRTOS 初步认识
- eclipse maven 修改启动端口号
- Reshaper介绍