鱼C论坛

 找回密码
 立即注册
查看: 1572|回复: 1

C++问题

[复制链接]
发表于 2020-11-18 12:13:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
阵列合并

总览

编写程序以合并两个数组

方向

例如,考虑两个数组A和B。
A = {10,25,35,40,55}
B = {15,30,5,20,45,65}

合并后的数组应该是具有元素{5,10,15,20,25,30,35,40,45,55,65}的另一个数组C。结果合并数组应按排序顺序包含A和B的所有元素。这并不意味着您可以将两个数组复制到第三个数组,然后对结果数组进行排序。但是,必须将两个数组的内容一一对应地合并到两个数组中,然后将其插入适当位置的结果数组中,以便合并后立即对其进行排序。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-18 13:05:11 | 显示全部楼层
本帖最后由 jackz007 于 2020-11-18 14:32 编辑
#include <stdio.h>

void swap(int * a , int * b)
{
        int t                                                                 ;
        t = * a                                                               ;
        * a = * b                                                             ;
        * b = t                                                               ;
}

// 显示数组元素
void show(int d[] , int n)
{
        int k                                                                 ;
        printf("%d" , d[0])                                                   ;
        for(k = 1 ; k < n ; k ++) printf("\t%d" , d[k])                       ;
        printf("\n")                                                          ;
}


// 数组元素排序
void sort(int d[] , int n)
{
        int i , j , t                                                                                        ;
        for(i = 0 ; i < n - 1 ; i ++) for(j = i + 1 ; j && d[j] < d[j - 1] ; j --) swap(& d[j] , & d[j - 1]) ;
}

// 数组元素倒序
void reverse(int d[] , int n)
{
        int k                                                                 ;
        for(k = 0 ; k < n / 2 ; k ++) swap(& d[k] , & d[n - k - 1])           ;
}

// 数组元素合并
int merge(int c[] , int a[] , int na , int b[] , int nb)
{
        int k , m                                                             ;
        for(m = 0 , k = 0 ; k < na ; m ++ , k ++) c[m] = a[k]                 ;
        for(k = 0 ; k < nb ; m ++ , k ++) c[m] = b[k]                         ;
        return m                                                              ;
}

int main(void)
{
        int A[] = {10 , 25 , 35 , 40 , 55} , na = 5                           ;
        int B[] = {15 , 30 , 5 , 20 , 45 , 65} , nb = 6                       ;
        int C[50] = {0} , nc                                                  ;
        nc = merge(C , A , na , B , nb)                                       ;
        sort(C , nc)                                                          ;
        show(C , nc)                                                          ;
        printf("\n")                                                          ;
}
        编译、运行实况:
D:\00.Excise\C>g++ -o sort sort.c

D:\00.Excise\C>sort
5       10      15      20      25      30      35      40      45      55
65

D:\00.Excise\C>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 13:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表