实验5 排序

本文通过一个包含多种排序算法(如起泡排序、直接插入排序、简单选择排序等)的程序,详细对比了不同排序方法在相同数据集上的表现,包括各自的比较次数和移动次数。

一、题目

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

二、需求分析      

本程序在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

五、调试分析

通过不断的加进函数调试

加深并实现算法的思想

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

对于不同的序列

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值