数据结构与算法c语言版胡明课后答案,算法设计与分析(第2版) 王红梅 胡明 习题答案...
O(N)+x=2*O(N/2)+2*x
a*O(N)+x=a*(2*O(N/2)+x)+x=2*a *O(N/2)+(a+1)*x 由此可知,时间复杂度可达到O(n);
3.分治策略一定导致递归吗?如果是,请解释原因。如果不是,给出一个不包含递归的分治例子,并阐述这种分治和包含递归的分治的主要不同。
不一定导致递归。
如非递归的二叉树中序遍历。
这种分治方法与递归的二叉树中序遍历主要区别是:应用了栈这个数据结构。
4. 对于待排序序列(5, 3, 1, 9),分别画出归并排序和快速排序的递归运行轨迹。
归并排序:
第一趟:(5,3)(1,9); 第二趟:(3,5,1,9); 第三趟:(1,3,5,9);
快速排序:
第一趟:5( ,3,1,9);//5为哨兵,比较9和5 第二趟:5(1,3, ,9);//比较1和5,将1挪到相应位置; 第三趟:5(1,3, ,9);//比较3和5; 第四趟:(1,3,5,9);
5. 设计分治算法求一个数组中的最大元素,并分析时间性能。
//简单的分治问题
//将数组均衡的分为“前”,“后”两部分
//分别求出这两部分最大值,然后再比较这两个最大值
#includeusing namespace std;
extern const int n=6;//声明 int main() { int a[n]={0,6,1,2,3,5};//初始化 int mid=n; int num_max1=0,num_max2=0; for(int i=0;i<=n;++i)//前半部分 { if(a[i]>num_max1) num_max1=a[i];
} for(int j=n+1;jnum_max2) num_max2=a[j]; } if(num_max1>=num_max2) cout<
cout<
时间复杂度:O(n)
6. 设计分治算法,实现将数组A[n]中所有元素循环左移k个位置, 要求时间复杂性为O(n),空间复杂性为O(1)。例如,对abcdefgh循环左移3位得到defghabc。
//采用分治法
//将数组分为0-k-1和k-n-1两块 //将这两块分别左移 //然后再合并左移
#include using namespace std;
void LeftReverse(char *a, int begin, int end) {
for(int i=0;i
int temp=a[begin+i]; a[begin+i]=a[end-i]; a[end-i]=temp; } }
void Converse(char *a,int n,int k) {
LeftReverse(a, 0, k+1); LeftReverse(a, k, n+1);
LeftReverse(a, 0, n-1); for(int i=0;iint main() {
char a[7]={'a','b','c','d','e','f','g'}; Converse(a,7,3);
return 0; }
7. 设计递归算法生成n个元素的所有排列对象。
#include using namespace std;
int data[100];
//在m个数中输出n个排列数(n<=m) void DPpl(int num,int m,int n,int depth) {
if(depth==n) {
for(int i=0;ifor(int j=0;jif((num&(1
DPpl(0,5,1,0);
DPpl(0,5,2,0); DPpl(0,5,3,0); DPpl(0,5,4,0); DPpl(0,5,5,0);
return 0; }
8. 设计分治算法求解一维空间上n个点的最近对问题。
参见4.4.1最近对问题的算法分析及算法实现
9. 在有序序列(r1, r2, ?, rn)中,存在序号i(1≤i≤n),使得ri=i。请设计一个分治算法找到这个元素,要求算法在最坏情况下的时间性能为O(log2n)。
//在有序数组中
//采用二分法查找符合条件的元素
#includeusing namespace std;
void Findnum(int *a,int n) {
int low=0; int high=n-1;
while(low<=high) {
int mid=(low+high)/2; if(a[mid]==mid) { cout
数据结构与算法c语言版胡明课后答案,算法设计与分析(第2版) 王红梅 胡明 习题答案...相关推荐
- 计算机算法设计与分析第四版复习,计算机算法设计与分析(第4版)第1章.ppt
<计算机算法设计与分析(第4版)第1章.ppt>由会员分享,可在线阅读,更多相关<计算机算法设计与分析(第4版)第1章.ppt(50页珍藏版)>请在人人文库网上搜索. 1.计算 ...
- 计算几何学习总结(使用教材算法设计与分析(第二版))
** 计算几何总结(使用教材算法设计与分析(第二版)李春葆 清华大学出版社) ** (代码大部分为书中原有代码,如有雷同,实属正常.) #include<bits/stdc++.h> us ...
- php 红包算法,PHP语言:实现微信红包拆分算法
本文主要向大家介绍了PHP语言:实现微信红包拆分算法,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. · 修复最后一个红包输出未保留2位数 · 修复领取的红包金额低于最小红包限制 * 红 ...
- 人工免疫算法c语言实例,毕业设计_蚁群算法模拟系统的设计与实现.doc
J I A N G S U U N I V E R S I T Y 本 科 毕 业 论 文 蚁群算法模拟系统的设计与实现 Ant Colony Simulation System Design and ...
- 栅格法路径算法C语言,基于地图栅格与QPSO算法结合的机器人路径规划方法与流程...
本发明属于机器人路径规划领域,提出一种基于地图栅格与QPSO结合的机器人路径规划方法. 背景技术: 移动机器人路径规划是寻找一条无碰撞的可行路径问题的方法.近些年,群智能优化算法逐渐成为移动机器人路径 ...
- 机械臂运动学算法c语言,6轴工业机械臂运动学算法(C++) 六轴机械臂运动学源码 - 下载 - 搜珍网...
6轴工业机械臂运动学算法 6轴工业机械臂运动学算法\.cproject 6轴工业机械臂运动学算法\.project 6轴工业机械臂运动学算法\.settings 6轴工业机械臂运动学算法\.setti ...
- 极值跟踪算法 c语言,快速约束极值子空间跟踪算法_魏志强.pdf
快速约束极值子空间跟踪算法_魏志强 34 4 Vol. 34 No. 4 第 卷第 期 华 北 水 利 水 电 学 院 学 报 2013 8 Journal of North China Instit ...
- SDU 2021.1 算法设计与分析考试 回忆版
SDU 2021.1 计科 算法设计与分析考试 计算题 DFSDFSDFS:画出深度优先树:给出每个点的开始时间和结束时间:给出每条边的分类 有向图上的多源最短路径,要求计算distancematri ...
- pbkdf2 算法 C语言实现,密码学基础之PBKDF2算法
站点登录需要输入用户名和密码,而密码属于个人敏感数据,应当只保存密码的单向哈希值.简单的哈希值,无法防止彩虹表攻击,使用基于口令的密钥派生算法PBKDF2可以解决这种问题. PBKDF2 需要以下输入 ...
- 计算机算法设计与分析期末试题,算法设计与分析期末考试试卷(D卷)(含答案).doc...
算法设计与分析期末考试试卷(D卷) 一.选择题(0分,每题分) .D A.n2/2 + 2n的渐进表达式上界函数是O(2n) B.n2/2 + 2n的渐进表达式下界函数是Ω(2n) C.logn3的渐 ...
最新文章
- 七骑士android版上线时间,腾讯独代韩手游《七骑士》今日全面公测
- Chorme控制台console的用法;
- 给枚举值增加扩展数据
- 愿岁月可回首,从家族营销到Android开发
- 1-9月全国快递服务企业业务量累计完成561.4亿件 同比增长27.9%
- 台式电脑已连接但无法上网_【PC】电脑网络连接正常但无法正常上网?教你几种解决办法!...
- java object类的方法,JAVA中Object类中 有几个方法?
- Silverlight学习之贪吃蛇游戏
- 利用python进行数据分析书籍_利用Python进行数据分析 (O'Reilly精品图书系列) 内省...
- 计量经济学笔记2---最大似然估计
- java写便签_JAVA编写便签纸
- virtualbox设置了共享文件夹却无权限访问
- 视频教程-ps基础课程绝对初级,小白听得懂-Photoshop
- office 2016下载安装
- ML之LoR:基于信用卡数据集利用LoR逻辑回归算法实现如何开发通用信用风险评分卡模型之以toad框架全流程讲解
- 加密 php代码,php代码加密
- 2022深圳杯A题论文
- showModalDialog兼容版
- 上新啦~《2021年中国云安全行业研究报告》(附下载)
- ECharts——条形图