noj大作业c语言扫雷,noj大作业.doc

作业名称:算法演示程序学 院:航海学院班 级:学 号:2013300951姓 名:苏和团队组成:

西北工业大学

2015年11月11日

1、问题与背景(描述程序所要解决的问题或应用背景)

C语言经过几十年的发展已经发展出多种多样的的排序方法,网上的解释和 代码良莠不齐,许多具有严重的错误,给学习者打来极大的不便。

因此,我将目前比较流行的7种排序法:

1.冒泡排序 2.选择排序 3.插入排序

4.快速排序 5堆排序 6归并排序

7.基数排序

加以总结,标明注释,成为这个演示程序,以供交流学习使用。

2、开发工具(列出所使用的开发工具和第3方开发库)

Code::block

3、主要功能(详细说明程序的功能)

基本功能:本程序可实现对100个及以下的数据排列的功能。

拓展功能:1.选择不同的排序法进行排序。

2.选择数据正序排列,还是逆序排列。

4、设计内容(详细描述解决问题的原理和方法、算法、数据结构等)

本程序的数据变换主要在数组中进行。

冒泡排序

相邻两个记录之间进行比较和互换,使较小的记录逐渐从底部移向顶部。一次排序后最大的记录沉底,再比较前n-1个记录直到最后一次排列时只有两个记录。排列结束后最小的记录自然上浮至第一位。

选择排序

第i趟选择排序通过n-i次关键码的比较,从n-i+1个记录中选出关键码最小的记录,并和记录i交换。

插入排序

把新插入记录的关键码与已排好序的逐个比较,但找到第一个比其大的记录时,该记录之前即为插入位置k。从序列最后开始到该记录,逐个后移一个单元,将新纪录插入k位置。如果新纪录比其他记录都大,则插入到最后。

快速排序

通过一趟排序将要排序的记录分为两部分,其中一部分比另一部分都要小。再按此方法对两组数据分别进行递归快速排序,从而使序列成为有序序列。

堆排序

先将初始文件R[1..n]建成一个大根堆,此堆为初始的无序区。

再将关键字最大的记录R[1](即堆顶)和无序区的最后一个记录R[n]交换,由此得到新的无序区R[1..n-1]和有序区R[n]。由于交换后新的根R[1]可能违反堆性质,故应将当前无序区R[1..n-1]调整为堆。然后再次将R[1..n-1]中关键字最大的记录R[1]和该区间的最后一个记录R[n-1]交换,由此得到新的无序区R[1..n-2]和有序区R[n-1..n],同样要将R[1..n-2]调整为堆,直到无序区只有一个元素为止。

归并排序

将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

首先申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列。设定两个指针,最初位置分别为两个已经排序序列的起始位置。比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置。重复直到某一指针超出序列尾。将另一序列剩下的所有元素直接复制到合并序列尾。

基数排序

基数排序法又称“桶子法”(bucketsort)或binsort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用。

对数据来说,首先根据个位数的数值,在走访数值时将它们分配至编号0到9的桶子中。接下来将这些桶子中的数值重新串接起来。接着再进行一次分配,这次是根据十位数来分配。接下来将这些桶子中的数值重新串接起来。重复以上过程直到最高位,这时候整个数列已经排序完毕。

5、程序文件与工程名称(标出程序中所有文件名、工程名称及其说明)

工程的名称:排序算法演示程序

包含的程序原文件如下:

1.sort.cpp

主函数、输入和输出数据、显示菜单、选择排序方法

2. sort_fun.cpp

实现7种排序的函数

3. myh.h

7种排序函数及其附属函数的声明

6、函数模块(程序中各个函数的原型声明及其说明)

void Bubble(int a[],int n); 冒泡排序

void Selection(int a[],int n); 选择排序

void Insertion(int a[],int n); 插入排序

void Quick(int a[],int n,int left,int right); 快速排序

void Shift(int a

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

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

相关文章

福州PHP讲师招聘_“艺”起就业|招聘信息汇总

亲爱的美术学院毕业生们在全国上下万众一心抗击新冠肺炎疫情的关键时期学院党委高度重视并时刻关注着每一位毕业生的就业工作为进一步做好疫情防控工作也为进一步确保同学们顺利求职就业保障毕业生就业工作的时效性学院公众号特别设立“艺”起就业—招聘信息发布栏目 由院学工…

哪个app最费电_关于石墨烯养生地暖,业主最关心的几大问题,答案附上!

很多人对石墨烯地暖有些许误解,不敢轻易接受。其实不然,石墨烯地暖是一种供热效果好、安全性高、运用寿命长、节能环保的新型健康采暖方式,不仅适用于住宅小区、别墅等家庭采暖,也可用于办公楼、医院等各类公共建筑采暖。在众多对…

双机之间的串行通信设计 c语言编程,双机串行通信设计精品.doc-资源下载人人文库网...

双机串行通信设计 精品.doc所属课程名称 单片机原理与接口技术 题 目 双机串行通信 二 总体设计2.1 设计目的 通过本次课题设计,应用单片机原理及其接口技术等所学相关知识及查阅资料,完成简易双机串行通信设计,以达到理论与实践更好的结合、…

cpu 抖动_微抖动,繁忙的等待和绑定CPU

cpu 抖动性能分析新机器 当我在新机器上工作时,我想了解它的局限性。 在这篇文章中,我将研究机器的抖动以及忙于等待本周末构建的新PC的影响。 该机器的规格很有趣,但不是发布目的。 永远不要少于它们: i7-3970X六核运行于4.5 GH…

南京邮电大学通达学院c语言实验报告,南京邮电大学通达学院c语言程序报告.docx...

南京邮电大学通达学院c语言程序报告南京邮电大学通达学院程序设计(上机)报告题 目: R015M P008E专 业 学 生 姓 名 班 级 学 号 指 导 教 师 日 期 2015年5月评 分 细 则评分项优秀良好中等及格不及格遵守机房规章制度上机表现学习态度基础知识水平程序设计能力课题…

两端分散对齐怎么设置_Word文字很难对齐?用这4个方法,2秒可对齐所有文字!...

日常工作中,我们在给Word文档进行对齐操作的时候,很多人都是猛敲空格键来对齐文字,通常是一顿操作猛如虎,仔细一看原地杵。简单的文字对齐,这种方法可能还算凑效,但稍显复杂的就不那么管用了。今天叨叨君就…

怎样学c++程序语言,如何学好 C++——学习门槛最高的编程语言

根据InfoQ 编程语言 2 月排行榜,统计发现,学习门槛最高的编程语言是 C。那么如何学好这门又难、门槛又高的语言呢?前面我们介绍过C。C是一种面向对象的计算机程序设计语言,由美国AT&T贝尔实验室的本贾尼斯特劳斯特卢普博士在2…

首个JDK 10(18.3)发行候选版(内部版本43)展示了新的版本控制方案

Mark Reinhold的帖子“ JDK 10:First Release Candidate ”宣布“内部版本43中没有未解决的P1错误”,并将Build 43命名为最初的JDK 10版本候选 。 Reinhold帖子还指向“ JDK 10 Early Access Builds ”页面,该页面包含发行说明的链接。 到基于…

7 centos 查看程序文件数量_CentOS之使用Systemd添加自定义系统服务

文章引言Systemd 就是为了解决Linux 的启动一直采用init进程问题而诞生的。它的设计目标是,为系统的启动和管理提供一套完整的解决方案。根据 Linux 惯例,字母d是守护进程(daemon)的缩写。 Systemd 这个名字的含义,就是…

做完c语言通讯录系统后的小结,c语言通讯录管理系统的总结

c语言通讯录管理系统的总结c语言通讯录管理系统的总结c语言课设管理系统总结完成情况防暴力输入密码加密输入并删除管理员和用户端两个端管理员对用户的账号删除注册用户用户的账户名及密码修改用户基本操作管理员基本操作存在的问题管理员无法对用户的数据进行修改未使用链表由…

因特尔显卡自定义分辨率_电脑显示器分辨率超频教程:1080P超2K分辨率的方法...

我们玩过CPU超频、显卡超频、内存超频等,相信不少用户还没有尝试过显示器超频,其实在前段时间,装机之家为广大爱好者发布了一篇【电脑显示器刷新率怎么超频?电脑显示器提高屏幕刷新率超频教程】文章,我们将一款普通60H…

pyinstaller安装失败解决

1.看到直接输入pip install pyinstaller 似乎很简单 2.尝试结果失败 3.其实失败有很多原因,但是有一个自我感觉通用的办法: 使用管理员身份打开cmd 输入 python -m pip install --upgrade pip 输入 pip install pywin32 输入 pip install wheel 输入 pip…

android pdu 编码规则,[转载]PDU编码规则

目前,发送短消息常用Text和PDU(Protocol DataUnit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也能发送英文短信。PDU…

Java 9示例–收集的工厂方法–创建不可修改的列表,集合和映射

大家好,这是我在该博客上发表的有关Java 9功能的第一篇文章,今天您将了解我最喜欢的功能“收集的工厂方法” ,它是JEP 269的一部分。JEP代表JDK增强建议。 如果您曾经在Groovy或Kotlin工作过,那么您就会知道使用集合文字使用元素创…

郴州郴锦机器人_减税降费宣传走进郴州市民营企业高质量发展专题培训班

红网时刻郴州8月23日讯(通讯员 陈磊 记者 欧群军)“毫不动摇支持民营经济健康发展离不开税收政策的有力支持。近年来,特别是今年以来国家系列税收优惠政策的出台,为民营经济的发展注入了新的活力。”8月22日,郴州市税务局减税降费宣讲课堂走进…

FPGA(8)--频率计检测控制系统

文章目录一、设计要求1.整体控制系统设计要求2.频率计检测设计要求二、设计思路1.确定VHDL描述与原理图相结合完成设计2.确定状态情况3.数码管显示功能三、设计内容1. 频率检测部分VHDL描述2. 七段数码管显示部分VHDL描述3. 系统主控制部分VHDL描述4.将三个部分的VHDL描述分别都…

linux shm_open,c – 如何更改shm_open路径?

我目前正在ubunto上开发一个应用程序并调用shm_open,目前默认路径在/ var / run / shm内.但是我需要将其更改为/ tmp.只是尝试以下操作不起作用:fd shm_open(“/ tmp / test”,O_RDWR | O_CREAT,0777);任何人都可以建议吗?解决方法:从shm_open(3)的手册…

lda进行图片分类_LDA主题模型

今天来啃硬骨头了,说说LDA主题模型。本文言简意赅,没有太多的数学公式。学习也不要太多的陷入算法的细枝末节之中,学习复杂的事物,需要从整体去把握。先列出本文的讲解顺序。什么是LDA模型2. 函数与 Beta函数3.共轭先验分布4.二项…

FPGA(1)--VHDL--6选1数据选择器

一、实验目的 掌握用VHDL语句进行组合电路设计的方法,并熟悉程序的编译、调试与波形图的仿真。 二、实验内容 分别用VHDL的CASE语句及IF语句两种方法,设计6选1数据选择器。通过编译、仿真验证功能正确性。 三、实验设计 设计的依据:教材…

android+4.4+jni闪退,native2.1 安卓退到后台时,概率闪退

赞同来自:同样的,在这个时候,还出了另一个错误,详情见下面的log,这个问题,出现的情况就和上面的不同,从5.0 - 9.0 ,level 22- level 28 ,都在出这个错误,真的搞不太清楚是为什么&…