数据结构

  • 格式:doc
  • 大小:554.34 KB
  • 文档页数:8

下载文档原格式

  / 8
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》

课程设计报告

专业:计算机科学与技术

姓名:钱昉

学号:19110321

指导教师:吉根林

二O一三年九月五日

一、必做题。

1、题目:

编程实现希尔、快速、堆排序、归并排序算法。要求随机产生10000个数据存入磁盘文件,然后读入数据文件,分别采用不同的排序方法进行排序,并将结果存入文件中。

2、算法思想:

利用rand()函数与文件流向文件中读入10000个数据,再将数据分别读入4个数组中,在对数组分别进行希尔、快速、堆排序、归并排序。希尔排序的基本思想:想将整个待排序列划分成若干个子序列,在子序列内分别进行直接插入排序;

然后重复上述的分组和排序;分组方式按着d=[n/2],d=2/d,来进行,最后对整个序列进行直接插入排序。快速排序的基本思想:从待排序中选取一个记录(通常是第一个)放到temp 中,然后将比temp小的放到temp之前,比temp大的放到temp之后。便分成了2个序列,再对2个序列进行相同操作。

堆排序的基本思想:首先创建小顶堆(大),将小顶堆(大)的堆顶作为最小值(大),然后对堆进行操作,使堆再次成为小顶堆(大),依次同上步骤,便是堆排序。归并排序:将若干序列逐步归并,最终归并成一个有序序列。

3、程序结构:

4、测试结果:

(1)希尔排序生产文件

(2)快速排序文件

10000随机 数的文件 数组str1 数组str4

数组str3 数组str2 希尔排序 归并排序 堆排序 快速排序 写入文件1 写入文件4

写入文件3 写入文件2

(3)堆排序文件

(4)归并排序文件

5、收获与体会:

(1)、不同的情况要选择适当的排序方法。

6、参考文献:数据结构教程(c++版)电子工业出版社

二、选做题。

1、题目:

压缩软件:设有一个文本文件A(可以是C源程序),统

计该文件中个字符的频率,对个字符进行Huffman编码,将该文件翻译成Huffman编码文件B,再将Huffman编码文件译码成文件C,并对文件A与C进行比较。

2、算法思想:

生产一个文件,并在文件中写入字符;字符的ascII范围是-128-127,倘若字符定义为无符号类型的,也就是unsigned char,那它的的范围就是0-255,可以定义一个大小为256的int数组str[256]。从文件中读入字符ch,读入一次则str[ch]++,最后便求出文件中字符的频数,再除以文件中字符总数,就求出字符出现的频率。现在就可以创建HuffmanTree的一个对象。接着就可以对文件进行编码与译码。

3、程序结构:

创建文件写入字符

求文件字符

出现的频率

创建对象

对原文件进

行编码

编码结果写

入文件

对编码进行

译码

译码结果写入文件

4、测试结果:(1)、源文件

(2)、编码后文件

(3)、译码后文件

5、收获与体会:

(1)、要有明确的思路才能很好地解决问题。

(2)、对字符的编码与操作有了一定的了解。

6、参考文献:数据结构教程(c++版)电子工业出版社