算法运行时间、logN、NlogN 之间的比较

1大部分程序的大部分指令之执行一次,或者最多几次。如果一个程序的所有指令都具有这样的性质,我们说这个程序的执行时间是常数。
logN如果一个程序的运行时间是对数级的,则随着N的增大程序会渐渐慢下来,如果一个程序将一个大的问题分解成一系列更小的问题,每一步都将问题的规 模缩减成几分之一,一般就会出现这样的运行时间函数。在我们所关心的范围内,可以认为运行时间小于一个大的常数。对数的基数会影响这个常数,但改变不会太 大:当N=1000时,如果基数是10,logN等于3;如果基数是2,logN约等于10.当N=1 00  000,logN只是前值的两倍。当N时原来的两倍,logN只增长了一个常数因子:仅当从N增长到N平方时,logN才会增长到原来的两倍。
N如果程序的运行时间的线性的,很可能是这样的情况:对每个输入的元素都做了少量的处理。当N=1 000  000时,运行时间大概也就是这个数值;当N增长到原来的两倍时,运行时间大概也增长到原来的两倍。如果一个算法必须处理N个输入(或者产生N个输出), 那么这种情况是最优的。
NlogN如果某个算法将问题分解成更小的子问题,独立地解决各个子问题,最后将结果综合起来,运行时间一般就是NlogN。我们找不到一个更好的形容, 就暂且将这样的算法运行时间叫做NlogN。当N=1 000 000时,NlogN大约是20 000  000。当N增长到原来的两倍,运行时间超过原来的两倍,但超过不是太多。
N平方如果一个算法的运行时间是二次的(quadratic),那么它一般只能用于一些规模较小的问题。这样的运行时间通常存在于需要处理每一对输入 数据项的算法(在程序中很可能表现为一个嵌套循环)中,当N=1000时,运行时间是1 000  000;如果N增长到原来的两倍,则运行时间将增长到原来的四倍。
N三次方类似的,如果一个算法需要处理输入数据想的三元组(很可能表现为三重嵌套循环),其运行时间一般就是三次的,只能用于一些规模较小的问题。当N=100时,运行时间就是1 000 000;如果N增长到原来的两倍,运行时间将会增长到原来的八倍。
2的N次方如果一个算法的运行时间是指数级的(exponential),一般它很难在实践中使用,即使这样的算法通常是对问题的直接求解。当N=20时,运行时间是1 000 000;如果增长到原来的两倍时,运行时间将是原时间的平方!

 

转载于:https://www.cnblogs.com/dever/archive/2013/01/27/2878993.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
排序算法运行时间是衡量算法效率的重要指标之一。在Python中,常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。下面是这些算法的简要介绍及其运行时间的分析: 1. 冒泡排序(Bubble Sort): - 平均时间复杂度:O(n^2) - 最好情况时间复杂度:O(n) - 最坏情况时间复杂度:O(n^2) - 空间复杂度:O(1) - 稳定性:稳定 2. 选择排序(Selection Sort): - 平均时间复杂度:O(n^2) - 最好情况时间复杂度:O(n^2) - 最坏情况时间复杂度:O(n^2) - 空间复杂度:O(1) - 稳定性:不稳定 3. 插入排序(Insertion Sort): - 平均时间复杂度:O(n^2) - 最好情况时间复杂度:O(n) - 最坏情况时间复杂度:O(n^2) - 空间复杂度:O(1) - 稳定性:稳定 4. 快速排序(Quick Sort): - 平均时间复杂度:O(nlogn) - 最好情况时间复杂度:O(nlogn) - 最坏情况时间复杂度:O(n^2) - 空间复杂度:O(logn)~O(n) - 稳定性:不稳定 5. 归并排序(Merge Sort): - 平均时间复杂度:O(nlogn) - 最好情况时间复杂度:O(nlogn) - 最坏情况时间复杂度:O(nlogn) - 空间复杂度:O(n) - 稳定性:稳定 需要注意的是,以上时间复杂度是基于平均情况下的估计,实际运行时间还受到数据规模、数据分布等因素的影响。此外,还有其他更高效的排序算法,如堆排序、计数排序、基数排序等,它们的运行时间复杂度更低。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值