欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    各种排序算法时间性能的比较讲解.docx

    • 资源ID:513384       资源大小:182.15KB        全文页数:16页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    各种排序算法时间性能的比较讲解.docx

    1、各种排序算法时间性能的比较讲解实训报告实训题目:各种排序算法时间性能的比较 学 院: 计算机科学与技术学院 专 业: 软件工程 班 级: 142 学 号: 1400170269 学生姓名: 莫磊 指导教师: 蔡丽 2016年 3 月15 日一、实训目的及要求 数据结构是计算机课程的一门重要的基础课,它的教学要求大致有三个重要方面:其一就是让学生学会分析研究计算机加工的数据对象的特性,以便为数据选择适当的物理结构和逻辑结构;其二,根据结构,选择适当的算法,并初步掌握算法的时间分析和空间分析;其三,学习复杂的程序设计。本综合实训利用Visual Studio 2008 集成编程环境为实践工具,通过

    2、上机实践培养学生分析具体问题、解决实际问题的能力,训练和培养学生的数据抽象能力和程序设计的能力。 数据结构是一门实践性较强的课程,以培养学生的数据抽象能力和程序设计的能力为目的。在实训时应注重培养学生的实际操作能力。本综合实训安排了18学时的实验课时,具体要求如下:1. 学习和理解每个实训题目的基本理论和方法;2. 掌握每个实验的实现步骤和关键技术;3. 准备好实验所需要的资源和文档;4. 上机实现程序,得到通过调试的正确程序。5. 根据每个实验的不同要求,完成实验报告的word文档。2、实训环境 Windows XPVisual Studio 2013 三、实训内容 (1) 设计并实现上述各

    3、种排序算法;(2) 产生正序和逆序的初始排列分别调用上述排序算法,并比较时间性能;(3) 产生随机的初始排列分别调用上述排序算法,并比较时间性能。 (4)对各种排序方法(直接插入排序、希尔排序、起泡排序、直接选择排序)的时间性能进行比较。四、算法描述及实训步骤 上述各种排序方法都是基于比较的内排序,其时间主要消耗在排序过程中进行的记录的比较次数和移动次数,因此,统计在相同数据状态下不同排序算法的比较次数和移动次数,即可实现比较各种排序算法的目的。 五、总结及心得体会直接选择排序算法是对冒泡排序的改进,这种方法是在参加排序数组中找出最小(或最大)的数据元素,使它与第一个元素中的数据相互交换位置然

    4、后再在余下的元素中找出最小(或最大)的数据元素与第二个元素中的元素交换位置,以此类推直到所有元素成为有序序列。六、实训结果七、源代码:#include #include #include /正序希尔排序void xiEr(int num, int n, int &no, int &r) int item; int i, j, d; for (d = n / 2; d = 1; d = d / 2) for (i = d; i= 0) & (itemnumj) numj + d = numj; j = j - d; r = r + 1; numj + d = item; no = no + 1;

    5、 / printf(n); / for(int x=0;x= 1; d = d / 2) for (i = d; i= 0) & (itemnumj) numj + d = numj; j = j - d; r = r + 1; numj + d = item; no = no + 1; /正序冒泡排序void MaoPao(int num, int n, int &no, int &r) bool flag; int test; for (int i = 1; i= i; j-) if (numjnumj - 1) test = numj; numj = numj - 1; numj - 1

    6、 = test; flag = false; r+; no+; if (flag) return; void MaoPaoUp(int num, int n, int &no, int &r) bool flag; int test; for (int i = 1; i= i; j-) if (numjnumj - 1) test = numj; numj = numj - 1; numj - 1 = test; flag = false; r+; no+; if (flag) return; void ChaRu(int num, int n, int &no, int &r)/直接插入排序

    7、 / :比较次数,r : 移动次数。 int i, j, x; for (i = 1; i= 0) & (xnumj) r+; numj + 1 = numj; j-; / 顺序比较和移动 numj + 1 = x; void ChaRuUp(int num, int n, int &no, int &r)/直接插入排序 /:比较次数,r : 移动次数。 int i, j, x; for (i = 1; i= 0) & (xnumj) r+; numj + 1 = numj; j-; / 顺序比较和移动 numj + 1 = x; void XuanZe(int num, int n, int

    8、 &no, int &r)/直接选择排序/:比较次数,r:移动次数 int x; int i, j, k; for (i = 1; i = n - 1; i+) k = i - 1; for (j = i; j = n - 1; j+) no+; if (numj numk) k = j; if (k != i - 1) r+; x = numi - 1; numi - 1 = numk; numk = x; void XuanZeUp(int num, int n, int &no, int &r)/直接选择排序/:比较次数,r:移动次数 int x; int i, j, k; for (i

    9、 = 1; i = n - 1; i+) k = i - 1; for (j = i; j numk) k = j; if (k != i - 1) r+; x = numi - 1; numi - 1 = numk; numk = x; void ShuChu(int num, int n, int no, int r, char name) printf(=输出%s排序后数据如下=nn, name); for (int x = 0; xn; x+) printf(%dt, numx); printf(n比较的次数为:%dt移动的次数为:%d, no, r); printf(n=nn);in

    10、t main() int num100; int n = 100; int no1, no2, no3, no4; int r1, r2, r3, r4; int no11, no22, no33, no44; int r11, r22, r33, r44; char name1 = 希尔正序; char name11 = 希尔逆序; char name2 = 冒泡正序; char name22 = 冒泡逆序; char name3 = 直接插入正序; char name33 = 直接插入逆序; char name4 = 直接选择正序; char name44 = 直接选择逆序; int it

    11、em1100; int item2100; int item3100; int item4100; int item22100; int item33100; int item44100; no4 = no3 = no2 = no1 = 0; r4 = r3 = r2 = r1 = 0; no44 = no33 = no22 = no11 = 0; r44 = r33 = r22 = r11 = 0; printf(=初始的随机数据如下=nn); for (int i = 0; in; i+) numi = rand() %100; printf(%dt, numi); for (int x

    12、= 0; xn; x+) item1x = numx; item2x = numx; item3x = numx; item4x = numx; item22x = numx; item33x = numx; item44x = numx; xiEr(num, n, no1, r1); ShuChu(num, n, no1, r1, name1); xiEr(item1,n,no11,r11); ShuChu(item1,n,no11,r11,name11); MaoPao(item2,n, no2, r2); ShuChu(item2, n, no2, r2, name2); MaoPaoU

    13、p(item22, n, no22, r22); ShuChu(item22, n, no22, r22, name22); ChaRu(item3,n,no3,r3); ShuChu(item3, n, no3, r3, name3); ChaRuUp(item33, n, no33, r33); ShuChu(item33, n, no33, r33, name33); XuanZe(item4, n, no4, r4); ShuChu(item4, n, no4, r4, name4); XuanZeUp(item44, n, no44, r44); ShuChu(item44, n,

    14、no44, r44, name44); printf(=n); printf(=n); printf(所有排序的比较次数和移动次数如下:nn); printf(%s:t比较次数为:%d 移动次数为:%dn, name1, no1, r1); printf(%s:t比较次数为:%d 移动次数为:%dn, name1, no11,r11); printf(%s:t比较次数为:%d 移动次数为:%dn, name2, no2, r2); printf(%s:t比较次数为:%d 移动次数为:%dn, name22, no22,r22); printf(%s:t比较次数为:%d 移动次数为:%dn, name3, no3, r3); printf(%s:t比较次数为:%d 移动次数为:%dn, name33, no33,r33); printf(%s:t比较次数为:%d 移动次数为:%dn, name4, no4, r4); printf(%s:t比较次数为:%d 移动次数为:%dn, name44, no44,r44); printf(n=n); getchar(); return 0;


    注意事项

    本文(各种排序算法时间性能的比较讲解.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开