数据结构设计_数据结构课程设计说明书

目录

1选题背景3

2设计原理及过程4

2.1直接插入排序4

2.1.1算法思想4

2.2.2排序过程4

2.2.3效率:4

2.2简单选择排序4

2.2.1算法思想4

2.2.2排序过程5

2.3冒泡排序5

2.3.1算法思想5

2.3.2排序过程5

2.4快速排序6

2.4.1算法思想6

2.4.2排序过程6

2.5希尔排序6

2.5.1算法思想6

2.5.2排序过程6

2.6归并排序7

2.6.1算法思想7

2.6.2算法过程7

3结果分析9

3.1各种排序的稳定性,时间复杂度和空间复杂度9

3.2算法时间复杂度10

3.3算法稳定性11

3.3选择排序算法准则11

4设计总结13

4.1设计体会13

4.2改进意见13

附 录14

1选题背景

数据结构是计算机程序设计的重要理论技术基础,它不仅是计算机学科的核心课程,而且已成为其他理工专业的热门选修课。

数据结构是一门专业选技术基础科。一方面,它要求我们学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及其相应的算法,并初步掌握算法的时间分析和空间分析的技术;另一方面,数据结构的学习过程也是复杂程序设计的训练过程,要求我们编写的程序结构清楚和正确易读,符合软件工程的规范,并培养我们的数据抽象能力。本次课程设计就是对数据结构中的排序及其算法的应用。

排序是计算机程序设计中的一项重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列。为了查找方便,我们通常希望计算机中的表是按关键字有序的。因为有序的顺序表可以采用查找效率较高的折半查找法,而无序的顺序表只能进行顺序查找,效率很低。因此,学习和研究各种排序算法是计算机工作者的重要课题之一。

由于待排序的记录数量不同,使得排序过程中涉及的存储器不同,可将排序分为内部排序和外部排序两大类。此课程设计的内容是对内部排序的应用。

2设计原理及过程

2.1直接插入排序

2.1.1算法思想

     插入排序基本原理是假定前面i个元素已经排好,接下来将第(i+1)个元素插入到前面的序列中,保证有序。循环插入所有元素,即完成排序。

2.2.2排序过程

插入第(i+1)元素如果是从后往前扫描,寻找比其小的元素,这叫作直接插入排序。如果是使用二分查找判断新元素位置,则叫作二分插入排序。两种插入排序都是稳定的。对于直接插入排序,新来元素位置是通过从后往前比较(寻找比其小或相等元素,假设是a[j])来确定的,将新元素放在a[j]后即可,相等可以保证稳定性。对于二分插入排序,可以通过修改二分查找来保证稳定性。

d8520acaf94f638a0d24260e24b74efa.png

图2-1 直接插入排序过程图

2.2.3效率

时间复杂度:O(n^2).

其他的插入排序有二分插入排序,2-路插入排序。

2.2简单选择排序

2.2.1算法思想

在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。

2.2.2排序过

第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换;

第二趟,从第二个记录开始n-1 个记录中选出关键码最小的记录与第二个记录交换;

以此类推…..

第i 趟,则从第i 个记录开始的n-i+1 个记录中选出关键码最小的记录与第i 个记录交换,直到整个序列按关键码有序。

d28a7e37552092f835c809ac5cad060f.png

图2-2 简单选择排序过程图

2.3冒泡排序

2.3.1算法思想

在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

2.3.2排序过程

a53fd1b9652b71165ec2311610aa51d7.png

图2-3 冒泡排序过程图

2.4快速排序

2.4.1算法思想

(1)选择一个基准元素,通常选择第一个元素或者最后一个元素,

(2)通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的 元素值比基准值大。

(3)此时基准元素在其排好序后的正确位置

(4)然后分别对这两

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值