Wangchunlulu 2022-04-06 19:17 采纳率: 88.5%
浏览 109
已结题

将2个已知有序的数组合并为一个新的有序数组。如下代码,已有两个数组 arr1 和 arr2,要求将两个数组中元素合并到数组 arr3 中,合并时要去除数组中的重复

将2个已知有序的数组合并为一个新的有序数组。如下代码,已有两个数组 arr1 和 arr2,要求将两个数组中元素合并到数组 arr3 中,合并时要去除数组中的重复数据。在下面代码中的补全代码处,补全下面代码实现相应功能。在补全处可以定义新的变量来完成合并功能。

#include <stdio.h>
void sort(int *a,int N)//编写sort函数 
{
for (int i = 0; i < N - 1; i++)
{
int min = i;
for (int j = i + 1; j < N; j++) if (a[min] > a[j]) min = j;
int t = a[min]; a[min]=a[i];a[i] =t;
}
}
int main(void)
{
    int arr1[] = {3,6,8,9,9,11,45}; 
    int arr2[] = {1,3,6,8,45,89};
    int arr3[20]; 
    int i, len;
    
    // 补全代码处
    int j,k;
    for(i = 0; i < 7; i ++)//对于arr1[]的元素进行查重 
    {
        for(j = i+1; j <7; j ++)//对后面每个元素比较,去重。
        {
            if(arr1[j] == arr1[i])//发现重复元素。
            {
                for(k = j+1; k<7; k ++)//依次前移一位。
                    arr1[k-1] = arr1[k];
            }
        }
    }
    for (i = 0; i < 7; i++)arr3[i] = arr1[i];//先将arr1的元素赋值给arr3 
    for(i=0;i<7;i++)//利用for循环嵌套,将arr1和arr2相同的元素变成0,进行筛选 
    {
        for (j = 0; j < 6; j++)
        {
            if (arr1[i] == arr2[j])
                arr2[j] = 0;
        }
    }
    len = 6;
    for(i=0;i<6;i++)//将arr2的元素赋值给arr3 
    {
        if(arr2[i]>0){ 
        arr3[len] = arr2[i];
        len++; 
        }
    }
    for(i=0;i<len;i++){
        sort(arr3,len);//对arr3进行从小到大排序 
    } 
    for (i=0; i<len; ++i)
    {
        printf("%d ", arr3[i]);
    }
    printf("\n");
//     预期输出结果:1 3 6 8 9 11 45 89

    return 0;
}

刚刚入门c语言,以上是我个人的解决办法,个人感觉代码中应该会有很多可以删除或者简化的地方,希望大家可以和我交流一下,如何改进这个代码

  • 写回答

1条回答 默认 最新

  • De-Chang Wang 2022-04-06 20:11
    关注

    既然已知的两个数组都是有序的,就可以直接同时遍历两个数组,择其一填入结果数组即可,一个单层的循环即可

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月19日
  • 已采纳回答 4月11日
  • 创建了问题 4月6日

悬赏问题

  • ¥15 Windows Script Host 无法找到脚本文件"C:\ProgramData\Player800\Cotrl.vbs”
  • ¥15 matlab自定义损失函数
  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图