数据结构课程设计报告 下载本文

内容发布更新时间 : 2024/12/29 15:17:14星期一 下面是文章的全部内容请认真阅读。

七种排序算法的演示

班级: 姓名: 学号: 完成日期:

一:需求分析

1. 程序所实现的功能

对直接插入排序、冒泡排序、选择排序、快速排序、归并排序、堆排序、基数排序算法的演示,并且输出每一趟的排序情况。

2.程序的输入 排序种类的输入 排序数的个数的输入

所需排序的具体数字的输入

3.程序的输出 主菜单的输出

每一趟排序的输出,即排序过程的输出

二:设计说明 1.算法设计思想

<1>交换排序(冒泡排序、快速排序)

交换排序的基本思想是:对排序表中的数据元素按关键字进行两两比较,如果发生逆序(即排列顺序与排序后的次序正好相反),则两者交换位置,直到所有数据元素都排好序为止。

<2>直接插入排序

直接插入排序的基本思想是:每一次设法把一个数据元素插入到已经排序的部分序列的合适位置,使得插入后的序列仍然是有序的。开始时建立一个初始的有序序列,它只包含一个数据元素。然后,从这个初始序列出发不断插入数据元素,直到最后一个数据元素插到有序序列后,整个排序工作完成。

<3>选择排序(选择排序、堆排序)

选择排序的基本思想是:第一趟在有n个数据元素的排序表中选出关键字最小的数据元素,然后在剩下的n-1个数据元素中再选出关键字最小(整个数据表中次小)的数据元素,依次重复,每一趟(例如第i趟,i=1,…,n-1)总是在当前剩下的n-i+1个待排序数据元素中选出关键字最小的数据元素,作为有序数据元素序列的第i个数据元素。等到第n-1趟选择结束,待排序数据元素仅剩下一个时就不用再选了,按选出的先后次序所得到的数据元素序列即为有序序列,排序即完成。 <4>归并排序

归并排序的基本思想是:假设初始排序表有n个数据元素,首先把它看成是长度为1的首尾相接的n个有序子表(以后称它们为归并项),先做两两归并,得n/2上取整个长度为2的归并项(如果n为奇数,则最后一个归并项的长度为1);再做两两归并,……,如此重复,最后得到一个长度为n的有序序列。 <5>基数排序

基数排序是完全不同于前面几种排序的一种排序方法,基数排序不需要对关键字间的比较,也称为多关键字排序,基数排序的基本思想:最高位优先法:先对最高位关键字k1(如花

色)排序,将序列分成若干子序列,每个子序列有相同的k1值;然后让每个子序列对次关键字k2(如面值)排序,又分成若干更小的子序列;依次重复,直至就每个子序列对最低位关键字kd排序;最后将所有子序列依次连接在一起成为一个有序序列。

最低位优先法:从最低位关键字kd起进行排序,然后再对高一位的关键字排序,……依次重复,直至对最高位关键字k1排序后,便成为一个有序序列。

2.程序的主要流程图

开始

进入主菜单 输入数据 选择排序方法 直插 冒泡 选择 快速 归并 堆排 基数 输出排序结果 退出系统