分别在a数组和 b数组中放入若干个数,把两个数组中的数按由小到大的顺序归并 到c数组中。 要求: 100
3个回答
展开全部
#包括
使用命名空间std;
无效合并(A1 [],诠释N1,诠释A2 [],N2,诠释A3 []);
:() {
const int的N1 = 10,N2 = 10;
诠释* A1 =新的int [N1];
诠释* A2 =新的int [N2];
(INT I = 0; I <N1,我+ +){
A1 [我] =我;
}
(INT I = 0;我<N2,我+ +){ BR /> A2 [我] =我;
}
诠释* A3 =新的int [N1 + N2];
合并(A1,A2,A3,N2,N1); ...... />(INT I = 0;我<N1 + N2 + +)
cout <<“请A3”“我”“] =”<< A3 [I] <endl;
系统(“暂停”);
返回0;
}
无效合并(A1 [],诠释N1,诠释A2 [] ,诠释N2,诠释A3 []){
整数索引1 = 0,索引2 = 0;
诠释index3 = 0;
(索引1,<N1 &&指数2 <N2)
:A3 [index3 + +] = a1的[指数1]> a2的[索引2]? A2 [索引2 + +]:A1 [索引1 + +];
(索引1 <N1)
A3 [index3 + +] = A1 [索引1 + +];
(索引2 N2)
A3 [index3 + +] = A2指数2 + +];
}
使用命名空间std;
无效合并(A1 [],诠释N1,诠释A2 [],N2,诠释A3 []);
:() {
const int的N1 = 10,N2 = 10;
诠释* A1 =新的int [N1];
诠释* A2 =新的int [N2];
(INT I = 0; I <N1,我+ +){
A1 [我] =我;
}
(INT I = 0;我<N2,我+ +){ BR /> A2 [我] =我;
}
诠释* A3 =新的int [N1 + N2];
合并(A1,A2,A3,N2,N1); ...... />(INT I = 0;我<N1 + N2 + +)
cout <<“请A3”“我”“] =”<< A3 [I] <endl;
系统(“暂停”);
返回0;
}
无效合并(A1 [],诠释N1,诠释A2 [] ,诠释N2,诠释A3 []){
整数索引1 = 0,索引2 = 0;
诠释index3 = 0;
(索引1,<N1 &&指数2 <N2)
:A3 [index3 + +] = a1的[指数1]> a2的[索引2]? A2 [索引2 + +]:A1 [索引1 + +];
(索引1 <N1)
A3 [index3 + +] = A1 [索引1 + +];
(索引2 N2)
A3 [index3 + +] = A2指数2 + +];
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
去找找分治算法试试吧...懒人看到100分都干瞪眼..
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用合并排序:
#包括
包括
包括中
/ /冒泡排序
无效排序(NUM [],INT)
{
INT I,J;
诠释吨;
(i = 0; I <N-1; + +)
{
(J = I +1,J <N,J + +)
{
(NUM [I]>民[J]) /> {
T = NUM?? [I];
民[I] = NUM?? [J];
民[J] = T;
}
} BR />}
}
/ /合并排序
无效合并(int数组[],诠释P,诠释Q,INT R)
{
我的K;
诠释begin1,END1,begin2,END2;
诠释* TEMP =(*)malloc的((RP +1)*表示sizeof(int));
begin1 = P;
END1 = Q;
begin2 = Q +1;
END2 = R;
K = 0;
而((begin1 <= END1)&& (begin2 <= END2))
{
(数组[begin1]数组[begin2])
{温度[K] =阵列[begin1];
begin1 + +
}
其他
{
温度[K] =阵列[begin2];
begin2 + +;
}
K表+ +
}
而(begin1 <= end1的| | begin2 <= END2)
{
(begin1 <= end1的)
{
温度[ K +] =阵列begin1 + +];
}
如果(begin2 <= END2)
{
温度[K + +] =阵列[begin2 + +]
}
}
为(i = 0; I <=(R - P),我+ +)
阵列[P + I] = TEMP [我];
免费(临时);
}
廉政的main()
{
诠释asize,BSIZE;
诠释* A * B,*结果;
INT I = 0;
printf的(“请输入一个数字数组中的元素:\ n”);
scanf的(“%d”,&A大小);
> A =(*)malloc的(A大小是sizeof(int));单个元素
printf的(“请把输入数组a:\ n”);
(i = 0; I < asize,我+ +)
scanf的(“%d”的,一个[i]);
(getchar函数()!='\ n“);
排序(A,A大小);
printf(“请输入数组b的元素个数:\ n”);
scanf的(“%d的”,BSIZE);
B = (*)malloc的(BSIZE的sizeof(int));
(i = 0; <BSIZE,我+ +)
scanf的(“%d”,&B [I]);
排序(B,BSIZE);
结果=(*)malloc的(如sizeof(int)*(A大小+ BSIZE));
memset的(结果为0,是sizeof(int)* (asize + BSIZE));
的memcpy(因此,A,A大小是sizeof(int));
的memcpy(结果+ A大小,B,是sizeof(int)* BSIZE);
合并(结果,0,A大小-1,A大小+ BSIZE-1),,;
为(i = 0; <A大小+ BSIZE,我+ +)
printf的(“%d”,结果我]);
系统(“暂停”);
返回0;
}
#包括
包括
包括中
/ /冒泡排序
无效排序(NUM [],INT)
{
INT I,J;
诠释吨;
(i = 0; I <N-1; + +)
{
(J = I +1,J <N,J + +)
{
(NUM [I]>民[J]) /> {
T = NUM?? [I];
民[I] = NUM?? [J];
民[J] = T;
}
} BR />}
}
/ /合并排序
无效合并(int数组[],诠释P,诠释Q,INT R)
{
我的K;
诠释begin1,END1,begin2,END2;
诠释* TEMP =(*)malloc的((RP +1)*表示sizeof(int));
begin1 = P;
END1 = Q;
begin2 = Q +1;
END2 = R;
K = 0;
而((begin1 <= END1)&& (begin2 <= END2))
{
(数组[begin1]数组[begin2])
{温度[K] =阵列[begin1];
begin1 + +
}
其他
{
温度[K] =阵列[begin2];
begin2 + +;
}
K表+ +
}
而(begin1 <= end1的| | begin2 <= END2)
{
(begin1 <= end1的)
{
温度[ K +] =阵列begin1 + +];
}
如果(begin2 <= END2)
{
温度[K + +] =阵列[begin2 + +]
}
}
为(i = 0; I <=(R - P),我+ +)
阵列[P + I] = TEMP [我];
免费(临时);
}
廉政的main()
{
诠释asize,BSIZE;
诠释* A * B,*结果;
INT I = 0;
printf的(“请输入一个数字数组中的元素:\ n”);
scanf的(“%d”,&A大小);
> A =(*)malloc的(A大小是sizeof(int));单个元素
printf的(“请把输入数组a:\ n”);
(i = 0; I < asize,我+ +)
scanf的(“%d”的,一个[i]);
(getchar函数()!='\ n“);
排序(A,A大小);
printf(“请输入数组b的元素个数:\ n”);
scanf的(“%d的”,BSIZE);
B = (*)malloc的(BSIZE的sizeof(int));
(i = 0; <BSIZE,我+ +)
scanf的(“%d”,&B [I]);
排序(B,BSIZE);
结果=(*)malloc的(如sizeof(int)*(A大小+ BSIZE));
memset的(结果为0,是sizeof(int)* (asize + BSIZE));
的memcpy(因此,A,A大小是sizeof(int));
的memcpy(结果+ A大小,B,是sizeof(int)* BSIZE);
合并(结果,0,A大小-1,A大小+ BSIZE-1),,;
为(i = 0; <A大小+ BSIZE,我+ +)
printf的(“%d”,结果我]);
系统(“暂停”);
返回0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询