1. 研究目的与意义
背景:随着计算机技术的日益发展,其应用早已不局限于简单的数值运算。
而涉及到问题的分析、数据结构框架的设计以及插入、删除、排序、查找等复杂的非数值处理和操作。
排序算法的学习就是为以后利用计算机资源高效地开发非数值处理的计算机程序打下坚实的理论、方法和技术基础。
2. 课题关键问题和重难点
关键问题:排序的方法很多,但是就其全面性能而言,很难提出一种被认为是最好的方法,每一种方法都有各自的优缺点,适合在不同的环境下使用。
如果排序中依据的不同原则对内部排序方法进行分类,则大致可分为直接插入排序、直接选择排序、起泡排序、shell排序、快速排序、堆排序六类。
难点一:每种排序算法都有自己的适用环境,需要搭建相应的环境来测试不同的排序算法,当数据量很小时,得出各排序算法的时间复杂度,随着数据量逐渐增大,分析各算法的时间复杂度变化趋势,从而得出结论。
3. 国内外研究现状(文献综述)
几种常见的排序算法:1、直接插入排序:假设待排序的n个记录{r0,r1,,rn}顺序存放在数组中,直接插入法在插入记录ri(i=1,2,,n-1)时,记录被划分为两个区间[r0,ri-1]和[ri 1,rn-1],其中,前一个子区间已经排好序,后一个子区间是当前未排序的部分,将关键码ki与ki-1ki-2,,k0依次比较,找出应该插入的位置,将记录ri插,然后将剩下的i-1个元素按关键词大小依次插入该有序序列,没插入一个元素后依然保持该序列有序,经过i-1趟排序后即成为有序序列。
每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。
2、希尔排序:shell排序又称缩小增量排序,shell排序法是以创建者donald shell的名字命名的.shell排序法是对相邻指定距离(称为间隔)的元素进行比较,已知到使用当前间隔进行比较的元素都按顺序排序为止.shell把间隔缩小一半,然后继续处理,当间隔最终变为1,并且不再出现变化时,shell排序也就完成了其处理过程.先取一个整数d1<d1),即所有记录放在同一组中进行直接插入,直到dt=1,即所有记录放在一组中为止。
4. 研究方案
排序的方法很多,但是就其全面性能而言,很难提出一种被认为是最好的方法,每一种方法都有各自的优缺点,适合在不同的环境下使用。
如果排序中依据的不同原则对内部排序方法进行分类,则大致可分为直接插入排序、直接选择排序、起泡排序、shell排序、快速排序、堆排序六类。
本文编写一个程序对直接插入排序、直接选择排序、起泡排序、shell排序、快速排序及堆排序这几种内部排序算法进行比较,用不同的测试数据做测试比较。
5. 工作计划
12.13-12.20,完成论文的查找和阅读,并写出开题报告草稿。
12.20-12.27,进一步修改开题报告并完成研究环境的搭建和测试。
12.27-1.3,查阅相关的代码。
