3-快速排序-实验报告
- 格式:doc
- 大小:60.50 KB
- 文档页数:5


快速排序算法c语言实验报告
冒泡法和选择法排序C程序实验报告 实验六:冒泡法排序
物理学416班 赵增月 F12 2011412194日期:2013年10
月31日 一·实验目的 1.熟练掌握程序编写步骤;
2.学习使用冒泡法和选择法排序; 3.熟练掌握数组的定义和输入输出方法。
二·实验器材
1.电子计算机; 2.VC6.0
三·实验内容与流程 1.流程图
(1)冒泡法
(2)选择法 2.输入程序如下: (1)冒泡法 #includestdio.h void main() { int a[10]; int i,j,t; printf(请输入10个数字:\n);
for(i=0;i10;i++)scanf(%d,&a[i]); printf(\n); for(j=0;j9;j++)for(i=0;i9-j;i++) if(a[i]a[i+1]) { t=a[i]; a[i]=a[i+1];
a[i+1]=t; } printf(排序后如下:\n); for(i=0;i10;i++) printf(%d,a[i]);
printf(\n); } (2)选择法 #includestdio.h void main() { int a[10]; int i,j,t,k;
printf(请输入10个数字:\n); for(i=0;i10;i++)scanf(%d,&a[i]);
printf(\n); for(i=0;i9;i++) {k=i;for(j=i+1;j10;j++) if
(a[k]a[j])k=j;t=a[i];a[i]=a[k];a[k]=t; }
printf(排序后如下:\n); for(i=0;i10;i++)printf(%d,a[i]); printf(\n); }
四.输出结果 (1冒泡法) 请输入10个数字: 135****2468
排序后如下: 12345678910 (2)选择法 输出结果
实验报告
实验名称 冒泡排序和快速排序
班 级
学 号
姓 名
成 绩
实验概述:
【实验目的及要求】
1. 实验目的
通过编程程序达到熟悉并掌握教材中所介绍的几种排序方法。
2. 实验内容
1)随机产生20位整数
2)输入序列,编写程序,按下列排序方法将序列从小到大排序并输出。
1. 冒泡排序
2. 快速排序
3)纪录每种方法比较次数和移动次数
3. 实验步骤和要求
同上
【实验原理】
1. 冒泡排序
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最大数。如此下去,直至最终完成排序。
2. 快速排序
设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。
一趟快速排序的算法是:
1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;
2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];
3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]和A[i]互换;
数据结构与算法设计
实验报告
(2016 — 2017 学年第1 学期)
实验名称:
年 级:
专 业:
班 级:
学 号:
姓 名:
指导教师:
成都信息工程大学 通信工程学院 一、 实验目的
验证各种简单的排序算法。在调试中体会排序过程。
二、实验要求
(1) 从键盘读入一组无序数据,按输入顺序先创建一个线性表。
(2) 用带菜单的主函数任意选择一种排序算法将该表进行递增排序,并显示出每一趟排序过程。
三、实验步骤
1、 创建工程(附带截图说明)
2、 根据算法编写程序(参见第六部分源代码)
3、 编译
4、 调试
四、实验结果图
图 1-直接输入排序
图 2-冒泡排序
图 3-直接选择排序
五、心得体会
与哈希表的操作实验相比,本次实验遇到的问题较大。由于此次实验中设计了三种排序方法导致我在设计算法时混淆了一些概念,设计思路特别混乱。虽然在理清思路后成功解决了直接输入和直接选择两种算法,但冒泡排序的算法仍未设计成功。虽然在老师和同学的帮助下完成了冒泡排序的算法,但还需要多练习这方面的习题,平时也应多思考这方面的问题。而且,在直接输入和直接选择的算法设计上也有较为复杂的地方,对照书本做了精简纠正。
本次实验让我发现自己在算法设计上存在一些思虑不周的地方,思考问题过于片面,逻辑思维能力太过单薄,还需要继续练习。
六、源代码
要求:粘贴个人代码,以便检查。
#include
#define MAXSIZE 100
typedef int KeyType;
typedef int DataType;
快速排序实验报告
快速排序实验报告
引言
快速排序是一种常用的排序算法,其核心思想是通过分治的方法将一个大问题拆分成多个小问题进行解决。本实验旨在通过实际操作和观察,验证快速排序算法的效率和可靠性。
实验步骤
1. 实验准备
在开始实验之前,我们需要准备一些必要的工具和材料。首先,我们需要一台计算机,并安装好支持编程语言的开发环境。其次,我们需要编写一个快速排序的程序,以便后续的实验操作。
2. 实验设计
为了验证快速排序算法的效率和可靠性,我们设计了以下实验方案:
(1)生成随机数序列:我们使用随机数生成器生成一组随机数序列,作为待排序的数据。
(2)执行快速排序算法:我们将生成的随机数序列作为输入,调用快速排序算法对其进行排序。
(3)记录排序时间:我们记录下排序算法执行的时间,以评估其效率。
(4)验证排序结果:我们对排序后的结果进行验证,确保排序算法的可靠性。
3. 实验过程
我们按照上述设计方案,进行了以下实验操作:
(1)生成随机数序列:我们使用编程语言的随机数生成函数,生成了一组包含1000个随机数的序列。
(2)执行快速排序算法:我们调用了编写好的快速排序程序,对生成的随机数序列进行排序。
(3)记录排序时间:我们使用计算机的计时功能,记录下排序算法执行的时间为0.032秒。
(4)验证排序结果:我们对排序后的结果进行了验证,确保排序算法的正确性。通过比较排序前后的序列,我们确认排序算法的可靠性。
实验结果
通过实验,我们得到了以下结果:
(1)排序算法的效率:根据实验记录,快速排序算法对1000个随机数进行排序的时间为0.032秒。这表明快速排序算法在处理大规模数据时具有较高的效率。
(2)排序算法的可靠性:通过验证排序结果,我们确认排序算法的正确性。排序前后的序列完全相同,证明快速排序算法能够正确地对数据进行排序。
讨论与分析
快速排序算法的高效性得益于其分治的思想。通过将一个大问题拆分成多个小问题进行解决,快速排序算法能够减少问题规模,提高排序的效率。同时,快速排序算法的可靠性也得到了验证,其排序结果与预期完全一致。