第2章 算法分析:课后习题
2014-07-20 22:46
302 查看
1:Eratosthenes筛选法
算法描述O(NloglogN): 时间复杂度的推断》》Knuth,Volume 2,page 394
Eratosthenes筛是一种用于计算小于N的所有素数的方法。我们从制作整数2到N的表开始。我们找出最小的未被删除的整数i,打印i,然后删除i,2i,3i,......。当i>√N时,算法终止。算法代码:
void Eratosthenes(int n) { for (int i = 2; i < n+1; i++) a[i]=1; for (int i = 2; i <= sqrt(n); i++) { if(a[i]==1) { int j=2; while(i*j <= n) { a[i*j]=0; j++; } } } for (int i = 2; i <= n; i++) if(a[i]==1) cout<<i<<" "; }
程序演示:
2:求解主要元素
算法描述:
大小为N的数组A,其主要元素是一个出现次数超过N/2的元素(从而这样的元素最多有一个)。例如数组 3,3,4,2,4,4,2,4,4 有一个主要元素4,而数组3,3,4,2,4,4,2,4没有主要元素。如果没有主要元素,那么你的程序应该指出来。
算法代码:
int majority(int a[], int b[], int n) { if (n==0) return tmp; if (n==1) return a[0]; if(n%2==1) { tmp=a[n-1]; n--; } int i=0,j=0; for (i = 0, j = 0; i < n; i+=2) if(a[i] == a[i+1]) b[j++]=a[i]; majority(b, a, j); }
算法演示:
相关文章推荐
- 《数据结构与算法分析:C语言描述_原书第二版》CH2算法分析_课后习题_部分解答
- 《Java数据结构和算法(第二版)》第2章编程作业2.6中noDup方法错误分析及纠正方法
- 《算法导论》[第2章] 算法入门-[2.2] 算法分析
- 【算法竞赛入门经典】【第二章】课后习题
- 【算法竞赛入门经典】【第一章】课后习题
- 连载4---第2章:开始(2.1:分析算法)
- 数据结构和算法分析习题解答之一——引言
- 【算法导论】第三版课后习题2-4逆序对
- 【算法导论】第三版课后习题*2.3-7
- 【算法竞赛入门经典】【第三章】课后习题(第二部分)
- 关于集合论章课后习题与教程习题解析纠错及个人分析
- 感知机章节课后习题 + 证明感知机算法收敛性
- 算法-java版算法竞赛入门解题代码-第2章习题
- [PeterDLax著泛函分析习题参考解答]第2章 线性映射
- 编程珠玑第2章部分课后习题答案注解
- 通过纯静态分析来还原算法,获取《加密与解密》第2章的TraceMe的注册机
- 算法导论第2章(1):插入排序,算法分析
- 读书笔记:算法导论第2章 第2节分析算法
- 第2章 变量和基本类型 课后习题
- 【算法导论第五章】课后习题解析