社区
数据结构与算法
帖子详情
求教:合并算法问题
bcloud
2003-07-26 09:34:29
设子数组a[0:k]和a[k+1:n-1]已排好序(0<=k<=n-1)。试设计一个合并这两个子数组为排好序的数组a[0:n-1]的算法。要求算法在最坏情况下所用的计算时间为O(n),且只用到O(1)的辅助空间。
Thank u.
...全文
35
12
打赏
收藏
求教:合并算法问题
设子数组a[0:k]和a[k+1:n-1]已排好序(0<=k<=n-1)。试设计一个合并这两个子数组为排好序的数组a[0:n-1]的算法。要求算法在最坏情况下所用的计算时间为O(n),且只用到O(1)的辅助空间。 Thank u.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
BlueSky2008
2003-07-27
打赏
举报
回复
sorry,二路并归排序也要用O(n)的空间,再想想。如果是对链表排序的话,好像就可以了。
bcloud
2003-07-26
打赏
举报
回复
你说的方法,只能符合计算时间为O(n),但题目对空间的要求没有满足,题中要求合并到a[0:n-1]中
BlueSky2008
2003-07-26
打赏
举报
回复
二路并归排序。
zzwu
2003-07-26
打赏
举报
回复
这是外排序,确实可以非常快.
外排序算法思想如下:
1.为了方便,把你的a[k+1]开始的数组改称b[0]数组;
2.为a[0],b[0]设2个指针, pa=0; pb=0;
3.比较a[pa],b[pb],小的输出,对应指针+1
4.重复3,直到一个指针到数组底;
5.将另一个数组的剩下元素全部输出.
zzwu
2003-07-26
打赏
举报
回复
抱歉,没有注意到O(1)辅助空间的要求.要从新考虑.
one_add_one
2003-07-26
打赏
举报
回复
感觉这个题目无解。。。我想了两年了。。
bcloud
2003-07-26
打赏
举报
回复
谢谢各位的回复,这个题感觉不容易,这个题出自21世纪系列教材《计算机算法设计与分析》,第二章,第12个习题,大家再帮忙动动脑筋啦。
IT_worker
2003-07-26
打赏
举报
回复
不好意思,上面程序完全错误。
我感觉楼主的问题好像是个陷阱,感觉非常容易,实际上很困难,我看来是做不出来了。
IT_worker
2003-07-26
打赏
举报
回复
void sort(int *F,int *M,int *L){
for(;F!=M; ++F)
if(*F>*M) swap(*F,*M);
}
上面的函数中F相当于楼主的a,M相当于a+k+1,L相当于a+n。函数仅仅再swap的时候用到一个辅助空间
ZhangYv
2003-07-26
打赏
举报
回复
二路并归排序
levinjoe
2003-07-26
打赏
举报
回复
sorry,上面代码是错的,我再想一下!
levinjoe
2003-07-26
打赏
举报
回复
zzwu说的是让你更容易理解!
int pa=0,pb=k+1;
while((pa<k+1)&&(pb<n))
{
if(LE(a[pa],a[pb])==true)
pa++;
else
{
temp=a[pa]; //0(1)空间
a[pa]=a[pb];
a[pb]=temp;
pb++;
}
}
c语言实现赫夫曼编码
赫夫曼编码,树的实现方法,纯c 的实现,初学,请指教
python如何对两个矩阵进行拼接_新手
求教
:怎样把两个列向量
合并
成一个 n*2 的矩阵?...
最近学习随即森林分类
算法
,碰到一个
问题
,试了各种互联网上的方法,都不能得到正确结果,只好在这里求助大家了.是这样:test_lables 是测试样本二分类的真实标签,有 692 个样本,test_hat 是预测值,现在我想把这两个
合并
在一块,组成一个 692*2 的矩阵,每个预测值对应一个真实值。源代码如下:import numpy as npimport pandas as pdfrom skl...
两个有序单链表的
合并
排序
算法
ListList MergeList(LiskList La, LinkList Lb){ Lnode *pa = La->next; Lnode *pb = Lb->next; if(Lb->next == null) return La; if(La->next == null) return Lb; LinkList Lc = (LinkList)malloc(sizeof(Lnode)); Lnode *r = Lc; .
python元组
合并
_
求教
Python
合并
元组
算法
42018-12-12 18:24:19 +08:00union find```from collections import defaultdictclass DSU:def __init__(self):self.weights = {}self.parents = {}def find(self, x):if x not in self.parents:self.parents[x] = x...
求教
:如何实现超大文件上传下载(大于2G 最大可能有5G)
需求:大文件上传,批量上传,断点续传,文件夹上传,大文件下载,批量下载,断点下载,文件夹下载文件夹:上传下载需要支持层级结构,采用非压缩方式文件大小:100G前端:vue2,vue3,vue-cli,jquery,html,webuploader后端:JSP,springbootweb服务:tomcat数据库:mysql,oracle,达梦,国产化数据库服务器:linux,信创国产化浏览器:ie8+,firefox,chrome,360,2345,QQ,搜狗,猎豹。
数据结构与算法
33,027
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章