实验五

实验五  排序

 


院 、系


 海师计教系


 班级


计本二班


学   号


 200624101101


 姓名


 杨振平


完成日期


 2007-12-19  


源程序名


123.cpp

 

一、题目

定义一个无序序列,使用插入排序、希尔排序、快速排序及堆排序等各种内部排序方法使之有序。

二、需求分析      

本程序在Windows环境下用用Visual C++编写,完成程序内部排序算法的实现:

三、概要设计

主函数中调用

Bubble_Sort();//起泡排序

              InsertSort();//直接插入排序

              SelectSort();//简单选择排序

              PrintfQuickSort();//快速排序

              ShellSort();//希尔排序

              HeapSort();//堆排序

6种排序算法函数

四、测试结果

要排序的随机数组是:

  106   44   82   98   43  198    3   70   84  170

  124    3   87  148  146   86   23   58   18  138

  114   15   55  172  113  195   24  192  154  133

   52  109  146   58   43  101  192   24   24  112

  138  102   70   40  147  186   91    3  192   92

   28  126   33   20    2  171  162   10  111  101

  172  183  174  186  146    3  189    2  122  142

  186  122  114  131  191   73  123  103  113   65

   41  148   66  142  126  123   60  144   31  150

   70   36    1   77   61  141  146  186   34  176

 

选择排序方法:1:   起泡排序

2:   直接插入排序

3:   简单选择排序

4:   快速排序

5:   希尔排序

6:   堆排序

7:   退出......

1

*******起泡排序*******

排序结果为:

    1    2    2    3    3    3    3   10   15   18

   20   23   24   24   24   28   31   33   34   36

   40   41   43   43   44   52   55   58   58   60

   61   65   66   70   70   70   73   77   82   84

   86   87   91   92   98  101  101  102  103  106

  109  111  112  113  113  114  114  122  122  123

  123  124  126  126  131  133  138  138  141  142

  142  144  146  146  146  146  147  148  148  150

  154  162  170  171  172  172  174  176  183  186

  186  186  186  189  191  192  192  192  195  198

 

比较次数为:4950

移动次数为:6927

 

选择排序方法:1:   起泡排序

2:   直接插入排序

3:   简单选择排序

4:   快速排序

5:   希尔排序

6:   堆排序

7:   退出......

2

*******直接插入排序*******

排序结果为:

    1    2    2    3    3    3    3   10   15   18

   20   23   24   24   24   28   31   33   34   36

   40   41   43   43   44   52   55   58   58   60

   61   65   66   70   70   70   73   77   82   84

   86   87   91   92   98  101  101  102  103  106

  109  111  112  113  113  114  114  122  122  123

  123  124  126  126  131  133  138  138  141  142

  142  144  146  146  146  146  147  148  148  150

  154  162  170  171  172  172  174  176  183  186

  186  186  186  189  191  192  192  192  195  198

 

比较次数为:2403

移动次数为:2505

选择排序方法:1:   起泡排序

2:   直接插入排序

3:   简单选择排序

4:   快速排序

5:   希尔排序

6:   堆排序

7:   退出......

3

*******简单选择排序*******

排序结果为:

    1    2    2    3    3    3    3   10   15   18

   20   23   24   24   24   28   31   33   34   36

   40   41   43   43   44   52   55   58   58   60

   61   65   66   70   70   70   73   77   82   84

   86   87   91   92   98  101  101  102  103  106

  109  111  112  113  113  114  114  122  122  123

  123  124  126  126  131  133  138  138  141  142

  142  144  146  146  146  146  147  148  148  150

  154  162  170  171  172  172  174  176  183  186

  186  186  186  189  191  192  192  192  195  198

 

比较次数为:4950

移动次数为:285

选择排序方法:1:   起泡排序

2:   直接插入排序

3:   简单选择排序

4:   快速排序

5:   希尔排序

6:   堆排序

7:   退出......

4

*******快速排序*******

排序结果为:

    1    2    2    3    3    3    3   10   15   18

   20   23   24   24   24   28   31   33   34   36

   40   41   43   43   44   52   55   58   58   60

   61   65   66   70   70   70   73   77   82   84

   86   87   91   92   98  101  101  102  103  106

  109  111  112  113  113  114  114  122  122  123

  123  124  126  126  131  133  138  138  141  142

  142  144  146  146  146  146  147  148  148  150

  154  162  170  171  172  172  174  176  183  186

  186  186  186  189  191  192  192  192  195  198

 

比较次数为:908

移动次数为:460

选择排序方法:1:   起泡排序

2:   直接插入排序

3:   简单选择排序

4:   快速排序

5:   希尔排序

6:   堆排序

7:   退出......

5

*******希尔排序*******

排序结果为:

    1    2    2    3    3    3    3   10   15   18

   20   23   24   24   24   28   31   33   34   36

   40   41   43   43   44   52   55   58   58   60

   61   65   66   70   70   70   73   77   82   84

   86   87   91   92   98  101  101  102  103  106

  109  111  112  113  113  114  114  122  122  123

  123  124  126  126  131  133  138  138  141  142

  142  144  146  146  146  146  147  148  148  150

  154  162  170  171  172  172  174  176  183  186

  186  186  186  189  191  192  192  192  195  198

 

比较次数为:1137

移动次数为:884

选择排序方法:1:   起泡排序

2:   直接插入排序

3:   简单选择排序

4:   快速排序

5:   希尔排序

6:   堆排序

7:   退出......

6

*******堆排序*******

排序结果为:

    1    2    2    3    3    3    3   10   15   18

   20   23   24   24   24   28   31   33   34   36

   40   41   43   43   44   52   55   58   58   60

   61   65   66   70   70   70   73   77   82   84

   86   87   91   92   98  101  101  102  103  106

  109  111  112  113  113  114  114  122  122  123

  123  124  126  126  131  133  138  138  141  142

  142  144  146  146  146  146  147  148  148  150

  154  162  170  171  172  172  174  176  183  186

  186  186  186  189  191  192  192  192  195  198

 

比较次数为:939

移动次数为:1170

选择排序方法:1:   起泡排序

2:   直接插入排序

3:   简单选择排序

4:   快速排序

5:   希尔排序

6:   堆排序

7:   退出......

7

Press any key to continue

五、调试分析

通过不断的加进函数调试

加深并实现算法的思想

从程序的结果可以清晰看出

对于不同的序列

各种算法的比较和移动次数

时间: 2024-08-18 13:39:32

实验五的相关文章

实验五 含有控制信号的计数器VHDL设计

一.实验目的 学习计数器的设计.仿真和硬件测试,进一步熟悉VHDL设计技术. 二.实验仪器与器材 计算机1台,GW48-PK2S实验箱1台,QuartusⅡ6.0 1套. 三.实验 1. 基本命题 在QuartusⅡ上设计一个含计数使能.异步复位和计数值并行预置功能的4位加法计数器,并进行编辑.编译.综合.适配.仿真,给出其所有信号的时序仿真波形. 1)        实验原理 由数电知识可知,4位加法计数器由clk时钟,rst置位,en使能,cq输出,cout进位输出构成. 2)       

数据结构教程 第二十二课 实验五 数组实验

教学目的: 掌握二维数组的实现方法 教学重点: 二维数组的存储表示,二维数组的基本操作 教学难点: 二维数组的基本操作 授课内容: 数组的顺序存储表示和实现: #include<stdarg.h> #define MAX_ARRAY_DIM 8 typedef struct { ElemType *base; int dim; int *bounds; int *constants; }Array; Status InitArray(Array &A,int dim,...); Sta

实验五附加

六. 源程序(带注释) #include<stdio.h> #include<stdlib.h> #include<time.h> #define MAX 100  //定义数组的长度 #define M  5  //希尔排序的趟数 int sort[MAX];  //定义要排序的数组 int move,compare;//移动次数,比较次数 /*********************起泡排序***************************/ void Bubb

深度解析javascript中的浅复制和深复制

     在谈javascript的浅复制和深复制之前,我们有必要在来讨论下js的数据类型.我们都知道有 Number,Boolean,String,Null,Undefined,Object五种类型.而Object又包含Function,Array 和Object自身.前面的五种类型叫做基本类型,而Object是引用类型.可能有人就要问,为什么要分基本类型和引用类型呢?后面你就会明白的.      我们首先来看看浅复制和深复制的简洁定义: 深复制:直接将数据复制给对应的变量 浅复制:将数据的地

竞价排名广告恶意点击是百度纵容的行为

很多做过百度竞价排名广告的人都会感慨,那是多壮观的烧钱啊!实际上没带来多大的商机,但广告费却每日倍增.关键词价格稍低,没法显示;设置费用上限,系统又提醒流失了多少客户.消耗得不偿失,有竞争对手恶意点击,但更多责任在于百度姑息养奸,坐拥渔翁之利.经过多次的实验,整理了数据并进行总结,写下<竞价排名广告恶意点击是百度纵容的行为>一文,解开百度故意放松技术防范的真相. 为了验证百度防止恶意点击技术,我拿了自己的账户进行测试研究.使用动态IP进行点击是最基本手段.因此,我将变换IP进行恶意点击的步骤分

数据结构教程

数据结构教程-序言 数据结构教程 第一课 数据结构的基本概念和术语 数据结构教程 第二课 抽象数据类型的表示与实现 数据结构教程 第三课 算法及算法设计要求 数据结构教程 第四课 算法效率的度量和存储空间需求 数据结构教程 第五课 线性表的类型定义 数据结构教程 第六课 线性表的顺序表示和实现 数据结构教程 第七课 实验一 线性表的顺序存储实验 数据结构教程 第八课 线性表的链式表示与实现 数据结构教程 第九课 循环链表与双向链表 数据结构教程 第十课 栈的表示与实现 数据结构教程 第十一课 栈

Oracle分区之四:分区维护和管理

一,分区表的相关实验 创建一个列表分区表 create table t3(id number,city varchar2(10)) partition by list(city) ( partition p1 values ('SH','JS','ZJ') , partition p2 values ('BJ','TJ','HB') , partition p3 values ('GZ','SZ') , partition p_others values (default) ); create

linux FTP设置技巧

首先安装Linux 企业版第一张光盘中的vsftpd-2.0.1-5.i386.rpm #rpm –ivh /media/cdrom/RedHat/RPMS/vsftpd-3.0.1-5.i386.rpm 启动vsftpd服务 #service vsftpd start 刷新防火墙 #iptables -F 这样一个简单linux下的FTP就已经搭建好了! 下面就来慢慢优化我们的FTP服务器: 实验一:如果我不允许FTP匿名登陆,我们可以修改vsftpd的主配置文件来实现 #vi /etc/vs

javascript的解析执行顺序在各个浏览器中的不同

 javascript是一种解释型语言,它的执行是自上而下的.由于各个浏览器对它的理解有所差异,所以我们有必要深入理解js的执行顺序 简介    javascript是一种解释型语言,它的执行是自上而下的.但是各浏览器对于[自上而下]的理解是有细微差别的,而代码的上下游也就是程序流对于程序正确运行又是至关重要的.所以我们有必要深入理解js的执行顺序.为此,我设计了如下八个实验来获得最确切的结果.    实验   代码如下: <script type="text/javascript&quo