
算法设计与分析
USTC_daffodil
USTC quasi-postgraduate
展开
-
算法设计与分析
算法时空复杂度总结数量级 | 能承受的大致规模 | 常见算法O(1) 任意 直接输出O(logn) 任意 二分查找、快速幂O(n) 以百万计(五六百万) 贪心算法、扫描和遍历O(nlogn) 以十万计(三四十万) 带有分治思想的算法,如二分法O(n2) 以千计数(两千) 枚举、动态原创 2021-10-31 11:22:02 · 101 阅读 · 0 评论 -
算法设计与分析 贪心算法
这里写自定义目录标题贪心算法贪心算法解0-1背包问题的错误贪心算法贪心算法与动态规划算法相同的是对于要求解的问题都具有最优子结构。贪心算法的基本要素是:贪心选择性和最优子结构。贪心算法的思想是:从问题的初始解出发逐步逼近给定的目标,每一步都做出( 当前看来是最优的选择 )(贪心选择),最终得到整个问题的最优解。贪心算法解0-1背包问题的错误对于0-1背包问题,贪心选择之所以不能得到最优解是因为在这种情况下,它无法保证最终能将背包装满,部分闲置的背包空间使每公斤背包空间的价值降低了。事实上,在考原创 2021-10-31 11:16:19 · 205 阅读 · 0 评论 -
算法设计与分析 搜索第k元
搜索第k元#include<stdio.h>#pragma warning (disabled:4996)int Search(int A[],int n,int k){ int i; if(k>=n) return -1; else { i=Partition(A,n);//indirect recursion if(i==k) return i; else if(i>k) return Search(A,i,k); else原创 2021-09-28 17:43:25 · 105 阅读 · 0 评论 -
算法设计与分析 2 二维递推&间接递推&递归分析
二维递推&间接递推&递归分析二维递推走地图#include<stdio.h>#define MAX 200int f[MAX][MAX];int Go(int n){ int i,j; for(i=0;i<n;i++) { f[0][i]=1; } for(i=1;i<n;i++) for(j=i;j<n;j++) { f[i][j]=f[i-1][j]+f[i][j-1]; } return f[n-1][n-1原创 2021-09-15 11:17:50 · 254 阅读 · 0 评论 -
算法设计与分析 1 递推与递归
递推与递归Fibonacci#include<stdio.h>#pragma warning (disabled:4996)#define MAX 100int f[MAX];//对应递推公式的数据区int fib(int n){ int i; f[0]=f[1]=1; for(i=2;i<n;i++) { f[i]=f[i-1]+f[i-2]; } return f[n];}void main(){ int res[10]; fib(10); f原创 2021-09-09 12:49:17 · 224 阅读 · 0 评论 -
算法设计与分析 Fibonacci数列问题的词典法(动态规划:词典)
Fibonacci数列问题的词典法Fibonacci数列问题的词典法#include<stdio.h>#pragma warning (disabled:4996)#define MAX 100int D[MAX];int init(int n)//初始化D,-1表示没有计算{ int i; D[0]=D[1]=1; for(i=2;i<=n;i++) D[i]=-1; return 1;}int fib(int n){ if(D[n]==-1)//如果词原创 2021-09-07 21:09:40 · 125 阅读 · 0 评论 -
算法设计与分析 4 估计递归函数复杂度所提及算法
算法设计与分析按分治法框架实现二分搜索int BinarySearch(int A[],int n,int x){ int mid,t; if(n<=0) return -1; else { mid=n/2; if(A[mid]==x) return mid; else if(x<A[mid]) return BinarySearch(A,mid,x);//在前一半中搜索 else { t=BinarySearch(&A[n+mi原创 2021-09-07 14:48:57 · 112 阅读 · 0 评论 -
算法设计与分析 0 算法与性能:GCD与冒泡排序
GCD与冒泡排序GCDGreatest common divisor欧几里得原理#include<stdio.h>#pragma warning (disabled:4996)int GCD(int a,int b){ int x; if(a<b) { x=a; a=b; b=x; } while(a%b!=0) { a=a-b; if(a<b) { x=a; a=b; b=x; } } return b;原创 2021-09-07 13:22:01 · 98 阅读 · 0 评论