数据结构课程设计 排序算法

发布 2022-10-01 22:41:28 阅读 7318

排序算法。

1.需求分析。

输入部分:要求用户能从屏幕上格式化输入元素个数。系统将自动生成用户输入的元素个数,存储**性表list中。

要求用户选择用插入排序、冒泡排序、选择排序及快速排序中的一种,然后程序根据用户的选择对线性表list从小到大进行排序。

最终,输出排序结果。

1.1插入排序。

思路:设有一组关键字,排序开始变认为k1是一个有序的序列,让k2插入到表长为1的有序序列,使之成为一个表长为2的有序序列,让k3插入到表长为2的有序序列,使之成为一个表长为3的有序序列,依次类推,最后让kn插入上述表长为n-1的有序序列,得到一个表长为n的有序序列。1.

2冒泡排序。

思路:比较相邻的元素。如果第一个比第二个大,就交换他们两个。

对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。1.3选择排序。

思路:首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到。

排序序列末尾。以此类推,直到所有元素均排序完毕。1.4快速排序。

思路:以第一个关键字k1为控制字,将[k1、k2、….kn]分成两个子区,使左区的有关键字小于等于k1,右区所有关键字大于等于k1,最后控制居两个子区中间的适当位置。

在子区内数据尚处于无序状态。将右区首、尾指针保存入栈,对左区进行与第(1)步相类似的处理,又得到它的左子区和右子区,控制字区中。重复第(1)、(2)步,直到左区处理完毕。

然后退栈对一个个子区进行相类似的处理,直到栈空。

2.概要设计。

程序流程可以用以下流程图来刻画。

用户从屏幕输入元素个数。

通过输入的数据自动生产顺序表list

选择排序算法输入0

输入1输入2输入3输入4

对顺序表进行插入排序。

对顺序表进行冒泡排序。

对顺序表进行选择排序。

对顺序表进行快速排序。

输出顺序表。

程序结束。3.详细设计。

采用microsoftvisualc++6.0作为开发工具,c语言作为开发语言。用顺序表类来储存数字,并编写插入排序、冒泡排序、选择排序及快速排序等成员函数。

3.1函数和结构体的声明。

用c中的结构体来描述一个顺序表的定义:

struct sqlist

3.2成员函数简介。

函数的功能:sqlist类的构造函数,通过用户输入的n个正整数,建立顺序表list.

sqlist::show()

函数的功能:输出顺序表内元素。 sqlist::

length()函数的功能:返回顺序表长度。返回值:

整型类型:顺序表的长度 sqlist:: insertsort()函数的功能:

对顺序表进行插入排序。 sqlist:: bubblesort()函数的功能:

对顺序表进行冒泡排序。 sqlist:: selectsort()函数的功能:

对顺序表进行选择排序。

sqlist:: quicksort(int left, int right)

函数的功能:对顺序表进行快速排序。

4.源**。

#include<>#include<>#include#include<>

#define size 1000000typedef struct _sqlist sqlist;

void creat(sqlist *&l)l->length = n;

void print(sqlist *&l)

if ( fp = fopen ( d:\\顺序表冒泡排序。txt", anull )

return;

for ( n=0; nlength; n++

return 0;

5.测试结果。

5.1插入排序。

5.2冒泡排序。

5.3选择排序。

5.4快速排序。

6.总结。在接触数据结构一段时间下来,通过对各种题型的操作,对线性表中顺序存储结构和链式存储结构有了感性认识,同时在老师的带领下不断进行自我完善,纠正由于思考不深引起的误区。比起c语言而言,数据结构是以c为基础,但要求的质量更高,篇幅也在加大,逻辑思维的要求也相应提高。

数据结构仍然强调布局,要想对课题进行全面的剖析,深入了解到它的本质,在脑海里投影出总体的框架,考虑结构体中参数也是至关重要的,要知道一个比较好的程序,不仅要求清楚易懂,还要讲究运行速度即时间复杂度,毕竟这是产生经济效应的基础。接下来就是如何将大脑的想法幻化成现实,如何才能将思想替换为正确的可执行的程序是主体,有时候理想和现实可能只有一步之遥,但你不去实践。

那就会相隔千里,实践**真知是学习数据结构中给我复习的。

数据结构的思想是培养我们的逻辑思维,同时透露出一种思维方式,怎样将程序变得容易操作,因为和c语言相比,数据结构有固定的格式程序,如何将以前的基本结构引用过来是节约宝贵时间的有力保障,也因此数据结构强调文件包含的一个原因,对于一个相对复杂的程序需要化大为小,抓住它的循环体就能做到。

说一句话只需要几秒中时间,但将思想变成现实却是需要你花上一件小事所用时间几千几万倍才能完成,理想与现实总是不等价的,但只要选择坚持,那么你会觉得理想不再遥远。

数据结构课程设计 排序

排序综合 学生姓名。学生学号。院 系 计算机科学与信息技术学院 年级专业。指导教师付丹丹。二 一一年十二月。课程设计成绩评定表。摘要。数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构 数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机...

数据结构查找算法课程设计

存档编号。西安 课程设计说明书。设计题目 查找算法性能分析。2015年 01月07 日。一需求分析。1.1问题描述。查找又称检索,是指在某种数据结构中找出满足给定条件的元素。查找是一种十分有用的操作。而查找也有内外之分,若整个查找过程只在内存中进行称为内查找 若查找过程中需要访问外存,则称为外查找,...

算法与数据结构课程设计

编号 120 说明书。进销存货物管理系统。学院 计算机科学与工程学院 专业 计算机科学与技术 学生姓名。学号。指导教师。2016年 6 月 26 日。摘要。本课程设计报告系统地阐述了我使用c 编写的进销存货物管理系统。首先,我对系统进行一个简要的概述。然后,我就系统的需求进行了详细的分析,这是设计工...