【算法课程实验一】五种排序算法的分析比较

本文通过对冒泡排序、选择排序、插入排序、归并排序和快速排序的算法原理、时间效率和时间复杂度的分析,揭示了各种排序算法在不同情况下的性能表现。实验结果显示,快速排序在平均情况下最优,其次是归并排序,而选择排序和冒泡排序由于较多的比较和移动操作,速度相对较慢。插入排序在最好情况下时间复杂度为O(n)。
摘要由CSDN通过智能技术生成
实验目的:
  1. 掌握选择排序、冒泡排序、合并排序、快速排序、归并排序的算法原理
  2. 分析不同排序算法的时间效率和时间复杂度,以及理论值与实测数据的对比分析。

一、冒泡排序

算法伪代码:

for i=1 to n     
        for j=0 to n-i
          if ( data[j]>=data[j+1])
               swap(data[j],data[j+1])

算法思路:

第一个循环表示n-1趟即可完成排序。每一趟将最大的数调换位置到未排序数字的末尾。


数据分析:

        由图1.冒泡排序的曲线图可以看出冒泡排序的时间增长基本符合二次增长,先选取以n=10000的实际时间t1作为理论时间的基准。

当n=20000时,t2=t1*(2/1)2

当n=30000时,t3=t1*(3/1)2,以此类推做出表1。

数据规模

10000

20000

30000

40000

50000

实际时间(ms)

171.1

669.75

1513.8

2580.85

3956.85

理论时间 (ms)

171

684

1539

2736

4275

表1.10000为基准


图1.冒泡排序

        由图一可得,以n=10000为基准时,n=50000时理论和实际有一些偏差。怀疑是n=10000的实测时间可能是高于平均时长,所以我又以n=50000为基准做出下表。

数据规模

10000

20000

30000

40000

50000

实际时间(ms)

171.1

669.75

1513.8

2580.85

3956.85

理论时间 (ms)

158.274

633.096

1424.466

2532.384

3956.85

表2.以n=50000为基准

          两条曲线基本拟合,说明当n=10000时所测得的实际时间比平均时间略长一点,所以导致后面的理论值偏大。

时间复杂度分析:

    冒泡排序最好情况:数据本来已是正序,仅需要进行n-1次比较操作即可,时间复杂度为O(n)

    冒泡排序

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值