• 有序表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行)。

  • 相关阅读:
    【项目】小帽课堂(一)
    如何使用SQL系列 之 如何在SQL中使用嵌套查询
    设计模式-组合模式(决策树)
    408 | 【2017年】计算机统考真题 自用回顾知识点整理
    typescript23-元组
    java计算机毕业设计高校微后勤服务平台源码+mysql数据库+系统+lw文档+部署
    全能视频工具 VideoProc Converter 4K for mac中文
    7、python中的多进程的创建与启动
    【机器学习】逻辑回归
    zoj 1377 Grandpa‘s Estate
  • 原文地址:https://blog.csdn.net/WHISTLE_ZXL/article/details/126207999