- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序设计挑战式课程设计报告
- PAGE 20 -
作业名称:算法演示程序学 院:航海学院班 级:学 号:2013300951姓 名:苏和团队组成:
西北工业大学
DATE \@ yyyy年M月d日 \* MERGEFORMAT 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]。由于 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId\t _blank 交换后新的根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]调整为堆,直到无序区只有一个元素为止。
归并排序
将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=92783 \t _blank 表合并成一个有序 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=92783 \t _blank 表,称为二路 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId\t _blank 归并。
首先申请空间,使其大小为两个已经 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=340252 \t _blank 排序序列之和,该空间用来存放合并后的序列。设定两个 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=252787 \t _blank 指针,最初位置分别为两个已经 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=340252 \t _blank 排序序列的起始位置。比较两个 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=252787 \t _blank 指针所指向的元素,选择相对小的元素放入到合并空间,并移动 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=252787 \t _blank 指针到下一位置。重复直到某一指针超出序列尾。将另一序列剩下的所有元素直接复制到合并序列尾。
基数排序
HYPERLINK /lemma/ShowInnerLi
您可能关注的文档
最近下载
- 花城版音乐二年级上册-《温暖的家》教案.pdf
- 2024高考英语考点887个核心词汇 .pdf VIP
- 2024年湖南高速铁路职业技术学院单招职业技能测试题库及答案解析.docx VIP
- 武汉市2025届高中毕业生二月调研考试(二调)数学试卷(含答案详解).pdf
- 世行贷款芦山地震灾后重建和减灾项目芦山县子项目环评报告.doc VIP
- 《消防设施操作员(基础知识初级技能)》配套教材课件完整版(文字可修改版).ppt
- 餐饮业经营与管理(第2版)中职PPT完整全套教学课件.pptx
- 美容皮肤科临床诊疗指南诊疗规范2023版.pdf
- 25题高级工程师岗位常见面试问题含HR问题考察点及参考回答.pdf
- 中职对口分类考试语文一轮复习文化常识专题复习资料.doc
文档评论(0)