数据结构课程设计排序算法比较[完整].docx

数据结构课程设计排序算法比较[完整].docx

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
精品学习资料 名师归纳总结——欢迎下载 下载可编辑XXXXXX高校《数据结构》课程设计报告.专业 下载可编辑 XXXXXX高校 《数据结构》课程设计报告 .专业 .整理 . 第 1 页,共 22 页 精品学习资料 名师归纳总结——欢迎下载 下载可编辑目录排序算法比较一,需求分析 二,程序的主要功能 三 下载可编辑 目 录 排序算法比较 一,需求分析 二,程序的主要功能 三,程序运行平台 四,数据结构 五,算法准时间复杂度 六,测试用例 七,程序源代码 二 感想体会与总结 .专业 .整理 . 第 2 页,共 22 页 精品学习资料 名师归纳总结——欢迎下载 下载可编辑排序算法比较一,需求分析利用随机函数产生N个随机整数( N = 500 ,1000, 1500,2000,2500,,30000 ),利用直接插入排序,折半插入排序,起泡排序,快速排序 下载可编辑 排序算法比较 一,需求分析 利用随机函数产生 N个随机整数( N = 500 ,1000, 1500,2000, 2500, ,30000 ),利用直接插入排序,折半插入排序,起泡排序,快速 排序,挑选排序,堆排序,基数排序七种排序方法(可添加其它排序方 法)进行排序(结果为由小到大的次序),并统计每一种排序所耗费的时 间(统计为图表坐标形式); 二,程序的主要功能 1. 用户输入任意个数,产生相应的随机数 2. 用户可以自己挑选排序方式(直接插入排序,折半插入排序,起泡 排序,快速排序,挑选排序,堆排序,基数排序)的一种 3. 程序给出原始数据,排序后从小到大的数据,并给出排序所用的时 间; 三,程序运行平台 版本 Visual C++ 6.0 四,数据结构 本程序的数据结构为线形表,线性次序表,线性链表; ; 1,结构体: typedef struct { 指向线形表的第一个结点; 闲置,不同的算法 int *r; //r r[0] 有不同的用处,如用作哨兵等; 次序表的总长度 int length; // }Sqlist; 2,空线性表 Status InitSqlist(Sqlist &L) { // 安排储备空间 L.r=(int *)malloc(MAXSIZE*sizeof(int)); if(.L.r) { 储备安排失败! "); printf(" exit(0); .专业 .整理 . 第 3 页,共 22 页 精品学习资料 名师归纳总结——欢迎下载 下载可编辑} // 储备安排失败初始长度为L.length=0;//return OK;0}五,算法准时间复杂度(一)各个排序是算法思想:( 1)直接插入排序:将一个记录插入到已排好的有序表中,从而得到一个新的,记录数增加1 的有序表;( 2)折半插入排序:插入排序的基本插入是在一个有序表中进行查找和插入,这个查找可利用折半查找来实现,即为折半插入排序;( 3)起泡排序:第一将第一个记录的关键字和其次个记录的关键字进行 比较,如为逆序, 下载可编辑 } // 储备安排失败 初始长度为 L.length=0;// return OK; 0 } 五,算法准时间复杂度 (一)各个排序是算法思想: ( 1)直接插入排序:将一个记录插入到已排好的有序表中,从而得到一 个新的,记录数增加 1 的有序表; ( 2)折半插入排序:插入排序的基本插入是在一个有序表中进行查找和 插入,这个查找可利用折半查找来实现,即为折半插入排序; ( 3)起泡排序:第一将第一个记录的关键字和其次个记录的关键字进行 比较,如为逆序,就将两个记录交换,然后比较其次个记录和第三个 记录的关键字;依此类推,直到第 N-1 和第 N个记录的关键字进行过 比较为止;上述为第一趟排序,其结果使得关键字的最大纪录被支配 到最终一个记录的位置上;然后进行其次趟起泡排序,对前 N-1 个记 录进行同样操作;一共要进行 N-1 趟起泡排序; ( 4)快速排序:通过一趟排序将待排记录分割成独立的两部分,其中一 部分记录的关键字均比另一部分记录的关键字小,就可分别对这两部 分记录连续进行排序,已达到整个序列有序; ( 5)挑选排序:通过 N-I 次关键字间的比较,从 N-I+1 个记录中选出关 键字最小的记录,并和第 I ( 1<=I<=N)个记录交换; ( 6)堆排序:在堆排序的算法中先建一个大顶堆,既先选得一个关键字 作为最大的记录并与序列中最终一个记录交换,然后对序列中前 记录进行挑选,重新将它调整成一个大顶堆,如此反复直到排序结 束; ( 7)基数排序:按最低位优先法先对低位关键字进行排序,直到对最高 位关键字排序为止,经过如干次安排和收集来实现排序 (二)时间复杂度分析 N-1 排序算法 最差时间 时间复杂度 是否稳固? 2 2 插入排序 O(n ) O(n

文档评论(0)

橙老师资料铺 + 关注
实名认证
内容提供者

精选资料欢迎下载

1亿VIP精品文档

相关文档