C语言顺序表,合并并排序(代码注释讲解)

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: C语言顺序表,合并并排序(代码注释讲解)
/*.已知有两个按元素值递增有序的顺序表A和B,设计一个算法将表A和表B的全部元素归并为一个按元素值非递减有序的顺序表C。
要求:
从键盘输入顺序表A和B的各元素,编程实现上述算法,输出顺序表A、顺序表B和顺序表C 的所有元素值 。*/
#include<stdio.h>
#include <stdlib.h>
#include<iomanip>
#include<iostream>
#pragma warning(disable:4996)
typedef int ElemType;
#define MAXSIZE 100
typedef struct shun
{
  ElemType data[MAXSIZE];
  int len;
}SqList;
void Mergelist_sq(SqList La, SqList Lb, SqList& Lc)//合并算法
{
  int i = 0, j = 0, k = 0;
  while (i < La.len && j < Lb.len)//当两个表都为扫描完的时候
  {
    if (La.data[i] < Lb.data[j])//如果表A的数据比表B的数据小
    {
      Lc.data[k] = La.data[i];  //把小的那个丢到C里面
      i++;//表A的位置也要+1,挪到下一个位置
      k++;//移动过去了,长度肯定+1
    }
    else if (La.data[i] > Lb.data[j])//同理
    {
      Lc.data[k] = Lb.data[j];
      j++;
      k++;
    }
    else//等于情况咯,两个都可以移动过去
    {
      Lc.data[k] = La.data[i]; i++; k++;
      Lc.data[k] = Lb.data[j]; j++; k++;
    }
  }
    while (i < La.len)//如果前面几次的移动还没移动完A,剩下的再插到C中
    {
      Lc.data[k] = La.data[i]; i++; k++;//为什么i,k加一?同上
    }
    while (j < Lb.len)//同理
    {
      Lc.data[k] = Lb.data[j]; j++; k++;
    }
    Lc.len = k;// C顺序表合并后的实际长度
}
  int main()//编写主函数,传入数据
  {
    SqList sqa, sqb, sqc;//定义结构体变量
    int a, b;
    printf("请输入顺序表A的元素个数:");
    scanf_s("%d",&a);
    printf("请输入顺序表A的数据:");
    for (int i = 0; i < a; i++)//依次输入A数据
    {
      scanf_s("%d", &sqa.data[i]);
    }
    sqa.len = a;//A顺序表的长度
    printf("A顺序表的长度为:%d\n", sqa.len);
    printf("请输入顺序表B的元素个数:");
    scanf_s("%d",&b);
    printf("请输入顺序表B的数据:");
    for (int j = 0; j <b; j++)//依次输入B数据
    {
      scanf_s("%d", &sqb.data[j]);
    }
    sqb.len = b;//B顺序表的长度
    printf("B顺序表的长度为:%d", sqb.len);
    printf("\n");
    Mergelist_sq(sqa, sqb, sqc);//A,B的数据有了,调用函数把这两个表合并到空顺序表C中,C是空!!
    printf("A顺序表的元素为:");
    for (int i = 0; i <sqa.len; i++)
    {
      printf("%d", sqa.data[i]);
    }
    printf("\n");
    printf("B顺序表的元素为:");
    for (int j = 0; j <sqb.len; j++)
    {
      printf("%d", sqb.data[j]);
    }
    printf("\n");
    printf("C顺序表的元素为:");
    for (int n = 0; n < sqc.len; n++)
    {
      printf("%d", sqc.data[n]);
    } 
}

有兴趣一起学习欢迎加群:

970353786
相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
3月前
|
存储 安全 数据管理
C语言之考勤模拟系统平台(千行代码)
C语言之考勤模拟系统平台(千行代码)
74 4
|
1月前
|
存储 算法 安全
【C语言程序设计——选择结构程序设计】按从小到大排序三个数(头歌实践教学平台习题)【合集】
本任务要求从键盘输入三个数,并按从小到大的顺序排序后输出。主要内容包括: - **任务描述**:实现三个数的排序并输出。 - **编程要求**:根据提示在编辑器中补充代码。 - **相关知识**: - 选择结构(if、if-else、switch) - 主要语句类型(条件语句) - 比较操作与交换操作 - **测试说明**:提供两组测试数据及预期输出。 - **通关代码**:完整代码示例。 - **测试结果**:展示测试通过的结果。 通过本任务,你将掌握基本的选择结构和排序算法的应用。祝你成功!
36 4
|
2月前
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
3月前
|
存储 安全 物联网
C语言物联网开发之设备安全与代码可靠性隐患
物联网设备的C语言代码安全与可靠性至关重要。一是防范代码安全漏洞,包括缓冲区溢出和代码注入风险,通过使用安全函数和严格输入验证来预防。二是提高代码跨平台兼容性,利用`stdint.h`定义统一的数据类型,并通过硬件接口抽象与适配减少平台间的差异,确保程序稳定运行。
72 10
|
3月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
99 1
|
3月前
|
搜索推荐 算法 C语言
【排序算法】八大排序(下)(c语言实现)(附源码)
本文继续学习并实现了八大排序算法中的后四种:堆排序、快速排序、归并排序和计数排序。详细介绍了每种排序算法的原理、步骤和代码实现,并通过测试数据展示了它们的性能表现。堆排序利用堆的特性进行排序,快速排序通过递归和多种划分方法实现高效排序,归并排序通过分治法将问题分解后再合并,计数排序则通过统计每个元素的出现次数实现非比较排序。最后,文章还对比了这些排序算法在处理一百万个整形数据时的运行时间,帮助读者了解不同算法的优劣。
192 7
|
3月前
|
搜索推荐 算法 C语言
【排序算法】八大排序(上)(c语言实现)(附源码)
本文介绍了四种常见的排序算法:冒泡排序、选择排序、插入排序和希尔排序。通过具体的代码实现和测试数据,详细解释了每种算法的工作原理和性能特点。冒泡排序通过不断交换相邻元素来排序,选择排序通过选择最小元素进行交换,插入排序通过逐步插入元素到已排序部分,而希尔排序则是插入排序的改进版,通过预排序使数据更接近有序,从而提高效率。文章最后总结了这四种算法的空间和时间复杂度,以及它们的稳定性。
153 8
|
3月前
|
存储 C语言
【数据结构】顺序表(c语言实现)(附源码)
本文介绍了线性表和顺序表的基本概念及其实现。线性表是一种有限序列,常见的线性表有顺序表、链表、栈、队列等。顺序表是一种基于连续内存地址存储数据的数据结构,其底层逻辑是数组。文章详细讲解了静态顺序表和动态顺序表的区别,并重点介绍了动态顺序表的实现,包括初始化、销毁、打印、增删查改等操作。最后,文章总结了顺序表的时间复杂度和局限性,并预告了后续关于链表的内容。
110 3
|
4月前
|
算法 C语言
【C语言】排序查找
【C语言】排序查找
|
4月前
|
C语言
深入C语言指针,使代码更加灵活(三)
深入C语言指针,使代码更加灵活(三)
深入C语言指针,使代码更加灵活(三)

热门文章

最新文章