设计合并排序算法实现对N个整数排序。

1.题目

  设计合并排序算法实现对N个整数排序

2.设计思路

  先将无序序列利用分治法划分为子序列,直至每个子序列只有一个元素,然后再对有序子序列逐步进行合并排序。合并方法是循环的将两个有序子序列当前的首元素进行比较,较小的元素取出,置入合并序列的左边空置位,直至其中一个子序列的最后一个元素置入合并序列中。最后将另一个子序列的剩余元素按顺序逐个置入合并序列尾部即可完成排序。
在这里插入图片描述

3.源代码

#include<stdio.h>
#define MAX 100
int B[MAX];
int Merge(int A[],int n)
{int mid,s1,s2,i,b;mid=n/2;s1=0;s2=mid;b=0;while(s1<mid&&s2<n)if(A[s1]<=A[s2])B[b++]=A[s1++];     //如果首元素值小于等于中间值就把该值赋到B集合内elseB[b++]=A[s2++];      //否则就把中间值赋给B集合if(s1<mid)for(i=s1;i<mid;i++)      //从0到n/2开始循环B[b++]=A[i];elsefor(i=s2;i<n;i++)B[b++]=A[i];for(i=0;i<n;i++)A[i]=B[i];return 1;
}
int MergeSort(int A[],int n)
{if(n<=1)return 1;     //如果n等于0或1则无法排序返回主调函数else{MergeSort(A,n/2);MergeSort(A+n/2,n-n/2);Merge(A,n);return 1;}
}int main()
{int a[1000],n,i;scanf("%d",&n);     //所输入的元素个数for(i=0;i<n;i++){scanf("%d",&a[i]);     //输入元素 }MergeSort(a,n);     //对所输入的元素进行排序for(i=0;i<n;i++){printf("%d ",B[i]); }return 0;
}

4.运行结果分析

输入元素个数:8
输入要排序的数组:67 44 6 98 23 21 45 66
排好序的数组:6 21 23 44 45 66 67 98 在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/14160.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Node中的模块引擎EJS模块渲染

1.导入 const ejsrequire("ejs") 2.声明数组 const group["张三","李四","王二","麻子"] 3.EJS实现 let resultejs.render(<ul> <% group.forEach(item>{ %> <li><%item%></li> <% }) …

Kotlin单例模式的一种懒汉模式写法

Kotlin单例模式的一种懒汉模式写法 class MyHelpler {companion object {private val singleHelpler by lazy(mode LazyThreadSafetyMode.SYNCHRONIZED) { MyHelpler() }fun instance() singleHelpler}fun sayHi() {println("fly")} }fun main(args: Array<Stri…

BOM操作

JavaScript组成 BOM 浏览器对象模型 window对象 是一个全局对象&#xff0c;也就是JavaScript中的顶级对象 像document&#xff0c;alert() console.log() 都是window对象的属性&#xff0c; 基本的BOM的属性和方法都属于window对象 通过var定义在全局作用域中的变量&#x…

从开机开始

1. 开机之后&#xff0c;计算机干了什么&#xff1f; 加载BIOS&#xff1a;计算机通电后&#xff0c;基本输入/输出系统&#xff08;BIOS&#xff09;会首先运行。BIOS是一个固件程序&#xff0c;它位于计算机主板上的芯片中&#xff0c;并负责初始化硬件设备、检测和解决问题…

106、基于STM32单片机万年历闹钟温度LCD1602系统设计(程序+原理图+PCB源文件+参考论文+开题报告+硬件设计资料+元器件清单等)

摘 要 本文介绍了基于STM32单片机的多功能电子万年历的硬件结构和软硬件设计方法。本设计由数据显示模块、温度采集模块、时间处理模块和调整设置模块四个模块组成。系统以STM32单片机为控制器&#xff0c;以串行时钟日历芯片DS1302记录日历和时间&#xff0c;它可以对年、月、…

Redis缓存同步1-策略介绍

缓存数据同步策略示意图 在大多数情况下&#xff0c;我们通过浏览器查询到的数据都是缓存数据&#xff0c;如果缓存数据与数据库的数据存在较大差异的话&#xff0c;可能会产生比较严重的后果的。所以&#xff0c;我们应该也必须保证数据库数据、缓存数据的一致性&#xff0c;…

Django_MVT(二)

目录 一、MVT简介 二、M-模型类 1. 定义模型类 2. 迁移 2.1 生成迁移文件命令如下&#xff1a; 2.2 执行迁移命令如下&#xff1a; 3. 数据基础操作 三、V-视图 1.定义视图 2.配置URLconf 访问服务器 四、T-模板 创建模板文件 定义模板 视图调用模板 视图调用模…

Ubuntu 的移动梦醒了

老实讲&#xff0c;移动版 Ubuntu 在手机、平板上的发展自始至终可能都没有达到过 Canonical 的期望&#xff0c;既然如此&#xff0c;不再勉为其难地坚持下去&#xff0c;或许才是更加明智的做法。 时至今日&#xff0c;官方显然也意识到了这一点&#xff0c;在早些时候发布的…

Linux安装配置Oracle+plsql安装配置(超详细)

注意&#xff1a;本文有大量的界面截图&#xff0c;如观看效果不佳可前往文字版&#xff1a; Linux安装配置Oracleplsql安装配置&#xff08;详细&#xff09;_超爱慢的博客-CSDN博客 目录 1 安装虚拟机系统 1.1 安装虚拟机 2.配置虚拟机 2.1 设置机器名 2.2 修改域名映射…

【编译原理】词法分析程序设计(C语言)

目录 一、实验内容二、实验原理三、结果分析四、源代码一、实验内容 给定下表所示的一个简单语言的词法规则描述完成以下任务: (1)画出识别该语言词法规则的状态转换图; (2)依据状态转换图,设计并编制词法分析程序,实现从输入源程序中,识别出各类单词,即关键字、标识…

keepalived

文章目录 一、suse系统安装keepalived1.1、准备环境1.2、修改主机名1.3、关闭防火墙1.4、配置网络1.5、配置 yum 源1.6、安装 mysql1.7、安装 keepalived报错信息&#xff1a;使用 wget 下载keepalived 报错解决 使用 wget 下载 keepalived的报错 一、suse系统安装keepalived …

Oracle表空间和用户

Oracle表空间和用户 前言 1、创建表空间 2、 删除表空间 3、创建用户 4、用户赋权限 5、Oracle三个重要的角色 1、创建表空间 ORACLE 数据库的逻辑单元。 一个表空间可以与多个数据文件&#xff08;物理结构&#xff09;关联 一个数据库下可以建立多个表空间&#xff0c;一个表…