篇一 :排序算法实验报告

实验课程:算法分析与设计

实验名称:几种排序算法的平均性能比较 (验证型实验)

实验目标:

(1) 几种排序算法在平均情况下哪一个更快。

(2) 加深对时间复杂度概念的理解。

实验任务:

(1)实现几种排序算法(selectionsort, insertionsort,bottomupsort,quicksort, 堆排序)。对于快速分类,SPLIT中的划分元素采用三者A(low),A(high),A((low+high)/2)中其值居中者。

(2)随机产生20组数据(比如n=5000i,1≤i≤20)。数据均属于范围(0,105)内的整数。对于同一组数据,运行以上几种排序算法,并记录各自的运行时间(以毫秒为单位)。

(3)根据实验数据及其结果来比较这几种分类算法的平均时间和比较次数,并得出结论。 实验设备及环境:

PC;C/C++等编程语言。

实验主要步骤:

(1) 明确实验目标和具体任务;

(2) 理解实验所涉及的几个分类算法;

(3) 编写程序实现上述分类算法;

(4) 设计实验数据并运行程序、记录运行的结果;

(5) 根据实验数据及其结果得出结论;

(6) 实验后的心得体会。

一:问题分析(包括问题描述、建模、算法的基本思想及程序实现的技巧等): 1: 随机生成n个0到100000的随机数用来排序的算法如下.

for(int n=1000;n<20000;n+=1000)

{ int a[]=new int[n]; for(int i=0;i<n;i++){ a[i]=(int) (Math.random()*100000); }

2.计算时间的类Date通过它的对象d1的getTime()得到当前时间,再得到排序完成时的时间,相减得到排序所花的时间.

…… …… 余下全文

篇二 :数据结构排序算法实验报告

《数据结构》课程设计报告

…… …… 余下全文

篇三 :数据结构排序实验报告

《数据结构》课程设计报告

实验五 排序

一、需求分析:

本演示程序用C++6.0编写,完成各种排序的实现,对输入的一组数字实现不同的排序方法,对其由小到大顺序输出。

(1)分别对直接插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序算法进行编写。

(2)、对存储的函数即输入的数字进行遍历。

(3)、初始化函数对输入的数字进行保存。

(4)、主函数实现使用者操作界面的编写,对输入、选择、保存、输出的各种实现。这当中还包括了各个函数的调用的实现。

(5)、程序所能达到的功能:完成对输入的数字的生成,并通过对各排序的选择实现数字从小到大的输出。

二、程序主要功能以及基本要求:

(1)、设计一个菜单,格式如下:

1、直接插入排序

2、希尔排序

3、冒泡排序

4、快速排序

5、选择排序

6、堆排序

7、退出

(2)、选择不同的菜单但进行相应的排序,并给出排序的关键字序列。

三、系统框架图:

本程序包含了9个函数,它们分别是:

(1)、直接插入排序的算法函数InsertSort()。

(2)、希尔排序的算法函数ShellSort()。

(3)、冒泡排序算法函数BubbleSort()。

(4)、快速排序的算法函数Partition()。

(5)、选择排序算法函数SelectSort()。

(6)、堆排序算法函数HeapAdjust()。

(7)、对存储数字的遍历函数Visit()。

(8)、初始化函数InitSqList()。

(9)、主函数main()。

四、详细设计

实现各个算法的主要内容,下面是各个函数的主要信息:

(1)各个排序函数的算法:

一、直接插入排序

void InsertSort(SqList &L)

…… …… 余下全文

篇四 :查找排序实验报告

实验十:查找、排序

计算机学院           122     121102013        李龙

实验目的:

1.  掌握折半查找算法的思想。

2.  实现折半查找的算法。

3.  掌握常见的排序算法(插入排序、交换排序、选择排序等)的思想、特点及其适用条件。

4.  能够分析各种算法的效率。

5.  熟练的掌常见的排序算法的程序步骤。

实验内容:

1.建立一静态有序表。

2.用一个函数实现折半查找算法。

3.在主函数中输入一组数据,测试算法的正确性。

4. 按照快速排序思想实现快速排序算法。

5. 在主函数中输入一段数据,测试算法的正确性。

设计思路:

开始的时候提示输入一组数据。并存入一维数组中,接下来调用一系列查找算法对其进行处理。顺序查找只是从头到尾进行遍历。二分查找则是先对数据进行排序,然后利用三个标志,分别指向最大,中间和最小数据,接下来根据待查找数据和中间数据的比较不断移动标志,直至找到。二叉排序树则是先构造,构造部分花费最多的精力,比根节点数据大的结点放入根节点的右子树,比根节点数据小的放入根节点的左子树,其实完全可以利用递归实现,这里使用的循环来实现的,感觉这里可以尝试用递归。当二叉树建好后,中序遍历序列即为由小到大的有序序列,查找次数不会超过二叉树的深度。这里还使用了广义表输出二叉树,以使得更直观。哈希表则是利用给定的函数式建立索引,方便查找

总体设计:

静态表的存储结构

typedef struct

{

        int *elem;

…… …… 余下全文

篇五 :算法设计与分析实验报告--排序

计算机算法设计与分析实验报告

学号:2011211773    姓名:吕功建    班级:0411103

实验一  快速排序

一、实验目的

1)以排序(分类)问题为例,掌握分治法的基本设计策略。

2)熟练掌握一般插入排序算法的实现;

3)熟练掌握快速排序算法的实现;

4) 理解常见的算法经验分析方法;

二、算法思想基本描述

分治算法思想:把规模为n的问题分成k个规模较小的子问题,且每个子问题相互独立且于原问题性质相同,递归的求解子问题,最后合并得到原问题的解。

插入算法思想:在无序的数组中,先将序列中的第一个数字看作是有序子序列,然后从第二个记录起逐个进行插入,直至将整个序列变成有序序列为止。

   快速排序算法思想:快速算法是一种基于分治技术的重要排序算法,把对n个对象的排序看作是对1到n的n个整数的排序。快速排序算法的基本思想是从中取一适合的关键字k,以k为标准把需要排序的n个对象分成两部分,一部分比k小,另一部分比k大,即:(小于k的部分)k(大于k的部分)然后对两部分分别进行快速排序,排序完毕后,简单的合并连接起来即可,算法还可递归的进行。

三、算法流程图

插入排序:

 


菱形: 循环是否结束                        否                                                           是

…… …… 余下全文

篇六 :排序算法比较系统实验报告

排序算法比较系统

一.         项目计划书

1.     项目的选题意义

随着计算机科学技术的快速发展,排序成为了计算机程序设计中的一种重要操作。它在计算机图形、计算机辅助设计、机器人、模式识别及统计学等领域具有广泛应用。在实际应用当中比如数据统计等方面都会用到。而且对一组数据进行排序也方便了后面对数据查找的操作。要知道在一个有序数组中查找和在一个随机无序数组中的查找的时间复杂度和系统消耗是有天壤之别的。它的的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。由于排序法很多,但就其全面性能而言,很难提出一种被认为是最好的方法,每一种方法都有各自的优缺点,适合在不同的的环境下使用。一般情况下,采用不同的排序算法效率会不一样。因此,在不同的环境下选择相对效率最高的排序算法,能够有效加快工程实施的进度。为了方便大家了解不同排序算法的时间效率,特建立一种排序算法比较系统,实现比较不同排序算法效率的目的。

2.     项目的主要内容和目标

排序算法比较系统主要实现的下列十种功能:

一.简单选择排序;

二.折半插入排序;

三.直接插入排序;

四.冒泡排序;

五.希尔排序;

六.快速排序;

七.归并排序;

八.堆排序;

九.清屏;

十.退出系统;

  3.项目的技术基础、特点及实施的条件

该项目可用C语言实现,适于在单机环境下运行。小组成员均已学习过C语言程序设计、数据结构、算法等课程,具有一定的开发能力。

4.项目人员分工

   所有人都参与了项目的选题、设计、实现及测试工作,项目负责人归纳整理小组成员

讨论成果,并确定最终方案。在实践阶段,按照功能模块具体分工如下:

…… …… 余下全文

篇七 :实验报告-各种排序方法及其实现

计算机学院实验报告专用纸

实验室:网络实验室                机号:网38            实验日期:20##年6月25日

计算机学院实验报告附页

计算机学院实验报告附页

计算机学院实验报告附页

计算机学院实验报告附页

计算机学院实验报告附页

计算机学院实验报告附页

计算机学院实验报告附页

…… …… 余下全文

篇八 :排序算法比较实验报告

1课程设计名称     

  排序算法的比较

 概述

排序是计算机程序设计中的一种重要操作。它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列。内部排序算法主要分为5 大类,有十二个算法。插入排序类、交换排序类、选择排序类、归并排序类和基数排序类。算法主要包括:插入排序、折半插入排序、选择排序、冒泡排序、希尔排序、快速排序、堆排序、归并排序、基数排序等。

2使用工具软件      

Microsoft Visual C++ 6.0

 

 

3 课程设计内容简介

3.1课程设计内容

掌握各种排序算法(直接插入排序、冒泡排序、快速排序、简单选择排序)的思路核比较他们之间的优劣。

3.2 基本要求

1.任意性:系统首先生成1000个随机整数,然后分别用不同的排序方法对其进行升序排序,给出每种方法的比较次数或所用时间

2.友好性:界面要友好,输入有提示,尽量展示人性化

3.可读性:源程序代码清晰、有层次 

4.健壮性:用户输入非法数据时,系统要及时给出警告信息

3.3 课程设计思想

     程序设计的总体思路:首先构建main()函数,根据题目的要求,再分别构建四个排序函数:冒泡排序函数(long Bubblesort(long R[], long n))、选择排序函数(long selectsort(long R[],long n))、直接插入排序函数(long insertsort(long R[], long n))和快速排序函数(void QuickSort(long R[],long n))。为了使程序具有可读性和层次感,建立一个导航函数(void DaoHang())和操作函数(void operate(long a[], long n)),其中,void DaoHang()用来告知用户程序的操作流程,void operate(long a[], long n)用来接收用户不同的选择,从而调用其它函数。

…… …… 余下全文