1.折半查找
| template<typename Comparable> |
| int binarySearch(const vector<Comparable>& a, const Comparable& x) |
| { |
| int left = 0, right = a.size() - 1; |
| while (left <= right) { |
| int mid = (left + right) / 2; |
| if (a[mid] > x) { |
| right = mid - 1; |
| } |
| else if (a[mid] < x) { |
| left = mid + 1; |
| } |
| else return mid; |
| } |
| return -1; |
| } |
2. 欧几里得算法,计算两个整数最大公因数
| long long gcd(long long a, long long b) |
| { |
| while (b != 0) { |
| long long tmp = a % b; |
| a = b; |
| b = tmp; |
| } |
| return a; |
| } |
| |
| |
| long long gcd2(long long a, long long b) { |
| return b == 0 ? a : gcd(b, a % b); |
| } |
3.幂运算
计算XN的明显的算法是使用N-1次乘法自乘。N≤1是递归的基准情形。否则,若N是偶数,则有XN=XN/2 · XN/2;如果N是奇数,则XN =X(N-1)/2 · X(N-1)/2 · X。
| long long pow(long long x, int n) { |
| if (n == 0)return 1; |
| if (n == 1)return x; |
| if (n % 2) |
| return pow(x * x, n / 2) * x; |
| else |
| return pow(x * x, n / 2); |
| } |
4.斐波那契数列
斐波那契数列的定义时 a0=0, a1=1 以及 an=an-1 + an-2 (n>1)。
| |
| int fib(int n){ |
| if(n<=1) return n; |
| return fib(n-1)+fib(n-2); |
| } |
| |
| |
| int memo[MAX_N+1]; |
| int fib(int n){ |
| if(n<=1) return n; |
| if(memo[n]!=0) return memo[n]; |
| return memo[n]=fib(n-1)+fib(n-2); |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!