数据结构第七次试验:排序

前言

为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的实验结果及代码贴至CSDN中,供同学们学习参考。如有不足或描述不完善之处,敬请各位指出,欢迎各位的斧正!

一、实验内容

第270页第二题第一小题

设待排序的关键字序列为{12,2,16,30,28,10,16*,20,6,18},试分别写出使用以下排序方法,每趟排序结束后关键字序列的状态。
①直接插入排序
②折半插入排序
③希尔排序(增量选取5、3和1)
④冒泡排序
⑤快速排序
⑥简单选择排序
⑦堆排序
⑧二路归并排序

第270页第二题第二小题

给出如下关键字序列(321,156,57,46,28,7,331,33,34,63},试按链式基数排序方法,列出每一趟分配和收集的过程。

二、实验环境

Dev C++或Visual Studio 2019

三、实验目的

通过做排序图,掌握每一步排序进行的方式

四、算法设计

①直接插入排序
初始:
在这里插入图片描述
第一步(2与12比较):
在这里插入图片描述
第二步(16与2、12比较):在这里插入图片描述
第三步(30与2、12、16比较):
在这里插入图片描述
第四步(28与2、12、16、30比较):
在这里插入图片描述
第五步(10与2、12比较):
在这里插入图片描述
第六步(16与2、10、12、16、28比较):
在这里插入图片描述
第七步(20与2、10、12、16、16
、28比较):
在这里插入图片描述
第八步(6与2、10比较):
在这里插入图片描述
第九步(18与2、6、10、12、16、16*、20比较):
在这里插入图片描述
②折半插入排序
初始:
在这里插入图片描述
第一步(2和12比较):
在这里插入图片描述
第二步(16和2、12比较):
在这里插入图片描述
第三步(30和12、16比较):
在这里插入图片描述
第四步(28和12、16、30比较):
在这里插入图片描述
第五步(10和16、12、2比较):
在这里插入图片描述
第六步(16和12、28、16比较):
在这里插入图片描述
第七步(20和16、28、16
比较):
在这里插入图片描述
第八步(6和16、10、2比较):
在这里插入图片描述
第九步:(18和16、20、16*比较)
在这里插入图片描述
③希尔排序(增量选取5、3和1)
初始:
在这里插入图片描述
第一步(增量为5):
在这里插入图片描述
第二步(增量为3):
在这里插入图片描述
第三步(增量为1):
在这里插入图片描述
④冒泡排序
初始:
在这里插入图片描述
第一步:
在这里插入图片描述
第二步:
在这里插入图片描述
第三步:
在这里插入图片描述
第四步:
在这里插入图片描述
第五步:
在这里插入图片描述
第六步:
在这里插入图片描述
第七步:
在这里插入图片描述
第八步:
在这里插入图片描述
第九步:
在这里插入图片描述
⑤快速排序
初始:(将第一位12作为基准元素)
在这里插入图片描述
第一步(right指针进行左移并与基准元素进行比较):
在这里插入图片描述
第二步(left指针进行右移并于基准元素进行比较):
在这里插入图片描述
第三步:
在这里插入图片描述
第四步(直到指针left=指针right时停止):
在这里插入图片描述
第五步(同样的方式在基准元素左右继续排序):
在这里插入图片描述
第六步:
在这里插入图片描述
第七步:
在这里插入图片描述
第八步:
在这里插入图片描述
第九步:
在这里插入图片描述
第十步:
在这里插入图片描述

在这里插入图片描述
⑥简单选择排序
初始:
在这里插入图片描述
第一步:
在这里插入图片描述
第二步:
在这里插入图片描述
第三步:
在这里插入图片描述
第四步:
在这里插入图片描述
第五步:
在这里插入图片描述
第六步:
在这里插入图片描述
第七步:
在这里插入图片描述
第八步:
在这里插入图片描述
第九步:
在这里插入图片描述
第十步:
在这里插入图片描述
第十一步:
在这里插入图片描述
第十二步:
在这里插入图片描述
第十三步:
在这里插入图片描述
第十四步:
在这里插入图片描述
第十五步:
在这里插入图片描述
第十六步:
在这里插入图片描述
第十七步:
在这里插入图片描述
第十八步:
在这里插入图片描述
第十九步:
在这里插入图片描述
⑦堆排序
初始:
在这里插入图片描述
即:
在这里插入图片描述
第一步(从最后一个非叶子结点开始,从左至右,从下至上):
在这里插入图片描述
第二步:
在这里插入图片描述
第三步(根节点与最后一个叶子交换):
在这里插入图片描述
第四步:
在这里插入图片描述
第五步:
在这里插入图片描述
第六步:
在这里插入图片描述
第七步:
在这里插入图片描述
第八步:
在这里插入图片描述
第九步:
在这里插入图片描述
第十步:
在这里插入图片描述
第十一步:
在这里插入图片描述
即:
在这里插入图片描述
⑧二路归并排序
初始:
在这里插入图片描述
第一步:
在这里插入图片描述
第二步:
在这里插入图片描述
第三步:
在这里插入图片描述
第四步:
在这里插入图片描述
第五步:
在这里插入图片描述
第六步:
在这里插入图片描述
第二题 链式基数排序:
初始:
在这里插入图片描述
第一步(首先按照各个数据的个位数字分配到0-9的10个区间内):
在这里插入图片描述
即:在这里插入图片描述
第二步(按照十位数字进行分配):
在这里插入图片描述
即:
在这里插入图片描述
第三步:(按照百位数字进行分配):
在这里插入图片描述
即:
在这里插入图片描述

五、实验分析(选做)

①直接插入排序
时间复杂度:O(n^2)
空间复杂度:O(1)
②折半插入排序
时间复杂度:O(n^2)
空间复杂度:O(1)
③希尔排序(增量选取5、3和1)
时间复杂度:O(n^1.3)
空间复杂度:O(1)
④冒泡排序
时间复杂度:O(n^2)
空间复杂度:O(1)
⑤快速排序
时间复杂度:O(nlog2n)
空间复杂度:O(1)
⑥简单选择排序
时间复杂度:O(n^2)
空间复杂度:O(1)
⑦堆排序
时间复杂度:O(nlog2n)
空间复杂度:O(1)
⑧二路归并排序
时间复杂度:O(nlog2n)
空间复杂度:O(n)
⑨链式基数排序
时间复杂度:O(d(r+n))
空间复杂度:O(rd+n)

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Knight_V_Schumacher

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值