算法就是计算或解决问题的步骤,算法的运行时间使用解决某个问题使用的“步数”,1步就是计算的基本单位。
作为示例,现在我们试着从理论层面求出选择排序的运行时间。选择排序的步骤如下。
① 从数列中寻找最小值 ② 将最小值和数列最左边的数字进行交换,排序结束。回到① 如果数列中有 n 个数字,那么①中“寻找最小值”的步骤只需确认 n 个数字即可。这里,将“确认 1 个数字的大小”作为操作的基本单位,需要的时间设为 Tc,那么步骤①的运行时间就是n×Tc。接下来,把“对两个数字进行交换”也作为操作的基本单位,需要的时间设为 Ts。那么,①和②总共重复 n 次,每经过“1 轮”,需要查找的数字就减少 1 个,因此总的运行时间如下。 ( n×Tc+ Ts)+(( n-1)×Tc+ Ts)+(( n-2)×Tc+ Ts)+…+(2×Tc+ Ts)+(1×Tc+ Ts) =1/2 Tcn ( n+1)+ Tsn =1/2 Tcn 2 +( 1/ 2 Tc+ Ts) n 虽说已经求得了运行时间,但其实这个结果还可以简化。Tc 和 Ts 都是基本单位,与输入无关。会根据输入变化而变化的只有数列的长度 n,所以接下来考虑 n 变大的情况。n 越大,上式中的 n2 也就越大,其他部分就相对变小了。也就是说,对式子影响最大的是 n2 。删掉其他部分,将结果表示成下式右边的形式。 1/2Tcn 2 +( 1/ 2 Tc+ Ts) n= O (n 2 ) 通过这种表示方法,就能大致了解到排序算法的运行时间与输入数据量 n 的平方成正比。 标签:数列,Ts,概念,算法,计时,排序,Tc,数字 From: https://www.cnblogs.com/okmai77xue/p/17082063.html