• 有序表A和B,其元素均按照从小到大升序排列,编写一个算法将它们合并成一个顺序表C,要求C的元素也是从小到大的升序排列。


    1. 题目要求:有序表A和B,其元素均按照从小到大升序排列,编写一个算法将它们合并成一个顺序表C,要求C的元素也是从小到大的升序排列。

    2. 代码实现:

      void merge(SqList A,SqList B,SqList *C)
      {
          int i=0,j=0,k=0;
          while(i<A.length && j<B.length)
          {
              if(A.data[i]<B.data[j])
                  C->data[k++]=A.data[i++];
              else
                  C->data[k++]=B.data[j++];
          }
          while(i<A.length) C->data[k++]=A.data[i++];
          while(j<B.length) C->data[k++]=B.data[j++];
          C->length=k;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
    3. 完整程序:

      #include
      #define MAXSIZE 30
      typedef struct
      {
      	int data[MAXSIZE];
      	int length;
      }SqList; 
      void merge(SqList A,SqList B,SqList *C)
      {
          int i=0,j=0,k=0;
          while(i<A.length && j<B.length)
          {
              if(A.data[i]<B.data[j])
                  C->data[k++]=A.data[i++];
              else
                  C->data[k++]=B.data[j++];
          }
          while(i<A.length) C->data[k++]=A.data[i++];
          while(j<B.length) C->data[k++]=B.data[j++];
          C->length=k;
      }
      int main()
      {
      	int m,n;
      	printf("请输入线性表A的长度m:");
      	scanf("%d",&m);
      	printf("请输入线性表B的长度n:");
      	scanf("%d",&n);
      	SqList A,B,C;
      	printf("请输入线性表A的数据(保证从小到大有序):");
      	for(int i=0;i<m;i++)
      		scanf("%d",&A.data[i]);
      	A.length=m;
      	printf("请输入线性表B的数据(保证从小到大有序):"); 
      	for(int i=0;i<n;i++)
      		scanf("%d",&B.data[i]);
      	B.length=n;
      	merge(A,B,&C);
      	printf("A和B合并后的序列为:"); 
      	for(int t=0;t<C.length;t++)
          	printf("%d ",C.data[t]);
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
    4. 运行结果:

      请输入线性表A的长度m:3
      请输入线性表B的长度n:5
      请输入线性表A的数据(保证从小到大有序):1 5 9
      请输入线性表B的数据(保证从小到大有序):2 4 9 11 17
      A和B合并后的序列为:1 2 4 5 9 9 11 17
      
      • 1
      • 2
      • 3
      • 4
      • 5

      -------------------------分割线-------------------------------
      用于处理CSDN的质量检测(文字不能低于10行)。
      用于处理CSDN的质量检测(文字不能低于10行)。
      用于处理CSDN的质量检测(文字不能低于10行)。
      用于处理CSDN的质量检测(文字不能低于10行)。
      用于处理CSDN的质量检测(文字不能低于10行)。
      用于处理CSDN的质量检测(文字不能低于10行)。
      用于处理CSDN的质量检测(文字不能低于10行)。
      用于处理CSDN的质量检测(文字不能低于10行)。
      用于处理CSDN的质量检测(文字不能低于10行)。
      用于处理CSDN的质量检测(文字不能低于10行)。

  • 相关阅读:
    Dubbo服务调用过程流程图
    MySQL Shell系列——升级检查器
    软件测试 -- 入门 1 软件测试是什么?
    「Java开发指南」如何利用MyEclipse启用Spring DSL?(二)
    【大数据】基于 Flink CDC 高效构建入湖通道
    HTML期末作业 蛋糕bootstrap响应式网站html+css+javascript+jquery+bootstarp
    OpenCV级联分类器识别车辆实践笔记
    点云切片的实现(PCL)C++
    欧科云链研究院探析Facebook稳定币发行经历会不会在PayPal重演
    苹果电脑壁纸软件Irvue for mac激活
  • 原文地址:https://blog.csdn.net/WHISTLE_ZXL/article/details/126207999