- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《算法设计》课程报告
课题名称: 算法设计
课题负责人名(学号): --
同组成员名单(角色): --
指导教师: ---
评阅成绩:
评阅意见:
提交报告时间:2014年 6 月 17 日
O(1)空间子数组换位算法
计算机科学与技术 专业
学生 -- 指导老师 ---
[题目描述] a[0:n-1]是一个有 n 个元素的数组, k(1≤k≤n-1)是一个非负整数。试设计一个算法将子数组 a[0:k-1]与 a[k+1:n-1]换位。要求算法在最坏情况下耗时 O(n),且只用到 O(1)的辅助空间
[关键词] 子数组 O(1)空间 O(n)时间
[算法分析]
采用分治算法
当v[k]左边子数组的长度等于右边的子数组长度时,直接将两个子数组对应的元素互换即可
当左边子数组长度小于右边子数组长度时,将左边子数组与右边子数组右边的等长子数组对换,再对结果递归调用对换函数
当右边子数组长度小于左边子数组长度时,将右边子数组与左边子数组左边的等长子数组对换,再对结果递归调用对换函数
通过分析,可知只需要利用保存元素对换时的交换空间即可,空间复杂度为O(1),子数组对换时时间复杂度不会超过O(n)
[程序实现]
#include stdio.h
#include stdlib.h
#include vector
#include iostream
using namespace std;
//对应互换v的left_low-left_high 和 right_low - right_high
void Swap(vectorint v,int left_low,int left_high,int right_low,int right_high){
int temp;
while(left_low = left_high){
temp = v[left_low];
v[left_low] = v[right_low];
v[right_low] = temp;
++left_low;
++right_low;
}
return;
}
//分治算法,每次选最小的子数组对应交换
void Exchange(vectorint v,int k,int low,int high){
if(lowhigh){
if((k-low+1)==(high-k)){//v[k]左右两个子数组长度相等,直接互换
Swap(v,low,k,k+1,high);
}
else if((k-low+1)(high-k)){//v[k]左边子数组长度小于右边子数组,将左边的子数组互换到右边子数组的右边
Swap(v,low,k,low+high-k,high);
Exchange(v,k,low,low+high-k-1);
}
else{ //v[k]右边子数组换到左边子数组前部分
Swap(v,low,high+low-k-1,k+1,high);
Exchange(v,k,high+low-k,high);
}
}
return;
}
int main(){
vectorint v;
int n,k;
while(scanf(%d%d,n,k)==2){
v.resize(n);
for(int i=0;in;++i){
scanf(%d,v[i]);
}
printf(Before exchange subarray:\n);
for(int j=0;jn;++j){
printf(%d ,v[j]);
}
printf(\n);
Exchange(v,k,0,n-1);
printf(After exchange subarray:\n);
for(int k=0;kn;++k){
printf(%d ,v[k]);
}
printf(\n);
}
return 0;
}
[运行结果]
参考文献
[] 王晓东.计算机算法设计与分析.--3版.--北京:电子工业出版社2007.5
课程名称: 学生姓名: 学生学号:
-2-
-1-
您可能关注的文档
- PS线稿上色.doc
- sim图文解析鉴权过程.docx
- SQLSERVER日志已满的处理方法.doc
- SCv2020存储系统安装报告.docx
- Oracle实践之EBSIntegratedSOAGateway实施指南.doc
- TEACCH与结构化教学(徐丽文).doc
- TDD-LTE系统干扰分析.docx
- TOC测定清洁方法验证方案.doc
- TXT韶关学院计算机系《操作系统》复习.doc
- U8快开工具生成凭证.docx
- 2023年江苏省镇江市润州区中考生物二模试卷+答案解析.pdf
- 2023年江苏省徐州市邳州市运河中学中考生物二模试卷+答案解析.pdf
- 2023年江苏省苏州市吴中区中考冲刺数学模拟预测卷+答案解析.pdf
- 2023年江苏省南通市崇川区田家炳中学中考数学四模试卷+答案解析.pdf
- 2023年江西省吉安市中考物理模拟试卷(一)+答案解析.pdf
- 2023年江苏省泰州市海陵区九年级(下)中考三模数学试卷+答案解析.pdf
- 2023年江苏省苏州市高新二中中考数学二模试卷+答案解析.pdf
- 2023年江苏省南通市九年级数学中考复习模拟卷+答案解析.pdf
- 2023年江苏省南通市海安市九年级数学模拟卷+答案解析.pdf
- 2023年江苏省泰州市靖江外国语学校中考数学一调试卷+答案解析.pdf
文档评论(0)