as12350992 发表于 2020-11-18 12:13:40

C++问题

阵列合并

总览

编写程序以合并两个数组

方向

例如,考虑两个数组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的所有元素。这并不意味着您可以将两个数组复制到第三个数组,然后对结果数组进行排序。但是,必须将两个数组的内容一一对应地合并到两个数组中,然后将其插入适当位置的结果数组中,以便合并后立即对其进行排序。

jackz007 发表于 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)                                                   ;
      for(k = 1 ; k < n ; k ++) printf("\t%d" , d)                     ;
      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 < d ; j --) swap(& d , & d) ;
}

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

// 数组元素合并
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 = a               ;
      for(k = 0 ; k < nb ; m ++ , k ++) c = b                         ;
      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 = {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>
页: [1]
查看完整版本: C++问题