社区
数据结构与算法
帖子详情
设子数组a[0:k]和a[k+1:n-1]已排序好(0<=k<=n-1).试设计一个合并这两个
booming
2005-07-23 10:39:34
设子数组a[0:k]和a[k+1:n-1]已排序好(0<=k<=n-1).试设计一个合并这两个
子数组为排序的数组a[0:n-1]的算法。要求算法在最坏情况下所用时间为O
(n),且只用到O(1)的辅助空间。
...全文
365
7
打赏
收藏
设子数组a[0:k]和a[k+1:n-1]已排序好(0<=k<=n-1).试设计一个合并这两个
设子数组a[0:k]和a[k+1:n-1]已排序好(0<=k<=n-1).试设计一个合并这两个 子数组为排序的数组a[0:n-1]的算法。要求算法在最坏情况下所用时间为O (n),且只用到O(1)的辅助空间。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
booming
2005-07-29
打赏
举报
回复
up
booming
2005-07-27
打赏
举报
回复
我不会啊。你能用分治法做下啊。谢谢了。
xiaoxiaofei
2005-07-27
打赏
举报
回复
同一个数组这种问题自己搞定,没一点挑战性
xiaoxiaofei
2005-07-27
打赏
举报
回复
你这个是‘一个’数组里的元素,根本不是什么‘两个子数组’。
如果是书上的原话,那么就是垃圾出版社和编辑弄错了。
booming
2005-07-27
打赏
举报
回复
我给个程序,你可以帮我举一个使他运行错误的例子吗?谢谢。因为我无法证明它正确。
#include <stdio.h>
#define N 14
#define K 10
int a[N]={1,2,3,4,6,8,10,11,12,13,14,-10,-9,16};
//测试数据
/*{ 5,100,101,1,2,2,4,6,8,10,100,101,120};
{1,2,3,4,6,8,10,11,12,13,14,-10,-9,16};
{1,2,3,4,6,8,10,11,12,13,14,-10,-9,16};
{1,3,5,7,9,2,4,6,8,10};
{ 5,100,101,1,2,4,5,100,101,120};
{ 5,100,101,1,2,2,4,6,8,10,100,101,120};
*/
//把a[k]后的元素与前面子数组元素交换,插到合适位置。
void f(int a[],int k,int n)//排序a[0:k]和a[k+1:n-1]
{int i,j,tmp,t,i0;j=k+1;i0=k+1;t=i0;
for(i=0;i<j;i++)
{
if(i==i0)
{
i0=j;
if(t==i)//t不为i时候,已经指向i0和j之间小的元素了
{//t始终指向i0和j之间小的元素
if(a[j]<a[i+1]) t=j;
else t=i+1;
}
}
if(a[t]<a[j])
{
if(a[i]>a[t])
{tmp=a[t];a[t]=a[i];a[i]=tmp; t++;
if(t==j) t=i0;
}
}
else if(a[i]>a[j]){ tmp=a[j];a[j]=a[i];a[i]=tmp;j++;}
else if(j!=i0&&a[i]>a[t])
{
tmp=a[t];a[t]=a[i];a[i]=tmp;t++;
if(t==j) t=i0;
}
}//for
}//2.12
void main()
{
f(a,K,N);
for(int i=0;i<N;i++)
printf("%d,",a[i]);
}
xiaoxiaofei
2005-07-25
打赏
举报
回复
晕,还发两个帖子。。。。。。
都说了,这个必须有一个c【n】数组的,不然没法存放数据啊!!
booming
2005-07-24
打赏
举报
回复
up
MoreWindows白话经典算法之七大
排序
(高清版)
这是本人在研一上课时所整理的文档,包括冒泡
排序
,直接插入
排序
,直接选择
排序
,希尔
排序
,归并
排序
,快速
排序
和堆
排序
这七种常用的
排序
方法,这些文章不仅使我在考
试
中取了不错的成绩,也为后来顺利面过迅雷,腾讯,微软打下了良好的基础,现在整理成电子书形式,希望能对大家有所帮助。
合并
两个
有序子
数组
设子
数组
a[0:k-1]和a[k,n-1]已经排好序(0<=k<=n-1).
设计
一个
合并
这
两个
子
数组
的
排序
好的
数组
a[0:n-1]的算法。要求算法最坏情况下所用的计算时间为O(n),且只用到O(1)的辅助空间。分析解答此题可以用向右(左)循环换位
合并
的思想,先用二分搜索查找a[0]在
数组
a[k:n-1]中的位置p使得a[p]<a[0]<=a[p+1].然后
数组
a[0:p]向...
设计
一个
时间复杂度O(n)的
合并
两个
已排好序
数组
的算法,且用到的辅助空间为O(1)。
设子
数组
a[0:k]和a[k+1:n-1]已排好序(0&amp;amp;amp;lt;=k&amp;amp;amp;lt;=n-1),
试
设计
一个
合并
这
两个
子
数组
为排好序的
数组
a[0:n-1]的算法。要求算法在最坏情况下所用的计算时间为O(n),且只用到O(1)的辅助空间。...
2-9
合并
子
数组
设子
数组
a[0:k-1]和a[k,n-1]已经排好序(0<=k<=n-1).
设计
一个
合并
这
两个
子
数组
的
排序
好的
数组
a[0:n-1]的算法。要求算法最坏情况下所用的计算时间为O(n),且只用到O(1)的辅助空间。解析:用三次翻转循环右移,举个栗子:n = 10, k = 5, a[0 : 9] = {0, 2, 4, 6, 8, 1, 3, 5, 7, 9}0 < 1, 不翻转...
【C语言】
合并
排序
。
题目:
设子
数组
a[0:k]和a[k+1:n-1]已排好序(0<=k<=n-2)。
试
设计
一个
合并
这
两个
子
数组
为排好序的
数组
a[0:n-1]的算法。要求算法的在最坏情况下所用的计算时间为O(n),且只用到O(1)的辅助空间。
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章