• 运行时间的计算方法


    1、了解输入数据的量和运行时间的关系

    使用相同的算法,输入数据的量不同,运行时间也会不同。比如对10个数字排序和对1000000个数字排序,很容易想到就是后者运行时间更长。实际上会长多少呢?后者是前者的100倍,还是1000000倍?不仅需要理解不同算法在运行时间上的区别,也要了解根据输入数据量的大小,算法的运行时间具体会产生多大变化。

    2、如何求运行时间

    使用“步数”来描述运行时间。“1步”就是计算的基本单位。通过测试“计算机从开始到结束总共执行了多少步”来求得算法的运行时间。

    根据理论层面求出选择排序的运行时间,选择排序的步骤如下:

    ①从数列中寻找最小值

    ②将最小的值和数列左边的数字交换,排序结束。回到①

    如果数列中有n个数字,那么①中“寻找最小值”步骤只需要确认n个数字即可。这里将“确认1个数字的大小”作为操作的基本单位,需要的时间设置为Tc,那么步骤①运行的时间就是n*Tc

    将“两个数字进行交换”也作为基本操作单位,需要时间设置为Ts,那么①和②总共重复n次,每经过“1轮”需要查找的数字就减少1个,因此总的运行时间如下:

     

    虽然只剩1个数字不需要确认了,但是方便起见还是进行对它进行确认和交换时间计算比较好。

    3、运行时间的表示方法

    Tc和Ts都是基本的单位,与输入无关。会根据输入变化而变化就是n,即数列的长度。所以需要考虑n变大的情况,n越大,n2就越大,其他部分就相对变小了。也就是说对结果影响最大的是n2。所以删除其他部分,将其结果表示为下面的形式。

     

    通过这个可以大概了解到排序算法的运行时间与输入量n的平方成正比。例如某个算法的运行时间如下:

     

    那么结果可以用O(n3)表示。

    如果运行时间为:

     

    则可以用O(nlogn)表示。

    备注:O表示“忽略重要项以外的内容”,O(n2)的意思是“算法的运行时间最长就是n2的常数倍”。

    欢迎批评指正,提出问题,谢谢!
  • 相关阅读:
    easyui的页面等待提示层,即mask
    easyui datebox 只选择年月
    java poi Excel导入 整数浮点数转换问题解决
    js去除日期字符串时分秒
    获得元素上的所有属性
    人月神话阅读笔记(二)
    人月神话读后感(一)
    独立冲刺阶段(四)
    独立冲刺阶段(三)
    独立冲刺阶段(二)
  • 原文地址:https://www.cnblogs.com/xxeleanor/p/14459748.html
Copyright © 2020-2023  润新知