目录
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]后即可,相等可以保证稳定性。对于二分插入排序,可以通过修改二分查找来保证稳定性。
图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 个记录交换,直到整个序列按关键码有序。
图2-2 简单选择排序过程图
2.3冒泡排序
2.3.1算法思想
在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
2.3.2排序过程
图2-3 冒泡排序过程图
2.4快速排序
2.4.1算法思想
(1)选择一个基准元素,通常选择第一个元素或者最后一个元素,
(2)通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的 元素值比基准值大。
(3)此时基准元素在其排好序后的正确位置
(4)然后分别对这两