将已按照降序排列的两个数组合并到一个数组中
答案:2 悬赏:50 手机版
解决时间 2021-04-05 09:40
- 提问者网友:wodetian
- 2021-04-04 23:25
将已按照降序排列的两个数组合并到一个数组中
最佳答案
- 五星知识达人网友:笑迎怀羞
- 2021-04-04 23:32
int main(int argc, const charchar * argv[])
{
int str1[5]={55,35,23,4,1};//两个升序数组
int str2[5]={25,22,12,9,3};
int out[10];//输出数组
int i=0,j=0,k=0;
while (i<5&&j<5){//循环将较小元素放入C
if (str1[i]>str2[j]) {
out[k]=str1[i];
i++;
k++;
}
else{
out[k]=str2[j];
j++;
k++;
}
}//while
if(i==5){//第1个数组元素已经全部放到C中,将第2个数组剩余元素全放到C中
while (j<5) {
out[k]=str2[j];
k++;
j++;
}
}
if(j==5){//第2个数组元素已经全部放到C中,将第1个数组剩余元素全放到C中
while (i<5) {
out[k]=str1[i];
k++;
i++;
}
}
for(int i=0;i<10;i++){
printf("%d ",out[i]);
}
}
{
int str1[5]={55,35,23,4,1};//两个升序数组
int str2[5]={25,22,12,9,3};
int out[10];//输出数组
int i=0,j=0,k=0;
while (i<5&&j<5){//循环将较小元素放入C
if (str1[i]>str2[j]) {
out[k]=str1[i];
i++;
k++;
}
else{
out[k]=str2[j];
j++;
k++;
}
}//while
if(i==5){//第1个数组元素已经全部放到C中,将第2个数组剩余元素全放到C中
while (j<5) {
out[k]=str2[j];
k++;
j++;
}
}
if(j==5){//第2个数组元素已经全部放到C中,将第1个数组剩余元素全放到C中
while (i<5) {
out[k]=str1[i];
k++;
i++;
}
}
for(int i=0;i<10;i++){
printf("%d ",out[i]);
}
}
全部回答
- 1楼网友:纵马山川剑自提
- 2021-04-05 00:48
你想用什么语言实现?//C语言
#include
#include
#include
int merge(int* ar1, int len1, int* ar2, int len2, int** rtn){
int i=0,j=0,k=0;
int* res = NULL;
if (ar1 == NULL || ar2 == NULL || rtn == NULL)
return 0;
*rtn = (int *)malloc((len1+len2)*sizeof(int));
if(*rtn == NULL)
return 0;
memset(*rtn, 0, (len1+len2)*sizeof(int));
res = (int*)*rtn;
int len = (len1+len2);
while(i
if (ar1[i]>ar2[j]) {
res[k++] = ar1[i++];
} else if (ar1[i]==ar2[j]) {
res[k++] = ar1[i++];
j++;
len--;
} else {
res[k++] = ar2[j++];
}
}
while(i
}
while(j
}
return len;
}
int merge_test()
{
int a1[] = {55,35,23,4,1};
int a2[] = {55,25,22,12,9,3,1};
int len1 = sizeof(a1)/sizeof(int);
int len2 = sizeof(a2)/sizeof(int);
int i = 0, len = 0;
int* a3 = NULL;
int* ptr = NULL;
len = merge(a1, len1, a2, len2, &a3);
if (a3 == NULL) {
printf("a3==NULL ");
return 1;
}
ptr = a3;
while(i
}
if (a3 != NULL) {
free(a3);
}
return 0;
}
int main(int argc, char* argv[]) {
merge_test();
return 0;
}
//Java语言
package com;
public class MergeTest {
static int merge(int[] ar1, int[] ar2, int[] res){
int i=0,j=0,k=0;
if (ar1 == null || ar2 == null)
return 0;
int len = (ar1.length+ar2.length);
while(i {
if (ar1[i]>ar2[j]) {
res[k++] = ar1[i++];
} else if (ar1[i]==ar2[j]) {
res[k++] = ar1[i++];
j++;
len--;
} else {
res[k++] = ar2[j++];
}
}
while(i res[k++] = ar1[i++];
}
while(j res[k++] = ar2[j++];
}
return len;
}
public static void main(String[] args) {
int a1[] = {55,35,23,4,1};
int a2[] = {55,25,22,12,9,3,1};
int a3[] = new int[a1.length + a2.length];
int len = merge(a1, a2, a3);
for (int i=0;i
}
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯