数据结构算法和算法效率评价
来源:互联网 发布:广电网络河源分公司 编辑:程序博客网 时间:2024/05/16 14:16
一、算法的基本概念
算法(Algorithm):是针对特定问题的问题求解步骤的一种描述。它是指令的有限序列;算法具有如下五个重要特征:
1.1、有穷性:有穷步骤,有穷计算时间;
1.2、确定性:每一条指令必须有确切的含义。换句话说就是:对于相同的输入必须得出相同的输出结果。
1.3、可行性:算法是可行的,算法中描述的操作都是可以通过已经实现的基本运算执行有限次得到。
1.4、输入
1.5、输出
一个好的算法有如下几个评价标准:
1.正确性
2.可读性
3.健壮性
4.效率与低存储量的要求
二、算法效率的度量
2.1时间复杂度:一个语句的频度是指该语句在算法中被重复执行的次数。算法中所有的语句频度之和记作T(n),他是该算法问题规模n的函数,时间复杂度主要分析T(n)的数量级;算法中的基本运算(循环中的最深循坏内语句)的频度与T(n)同数量级。所以通常用算法中基本运算的频度f(n)来分析算法的时间复杂度。因此时间的复杂度记作:
T(n) = O(f(n))
以上的O表示为T(n)的数量级。其严格的数学含义为:若T( n)和f(n)是定义在正整数集合上的两个函数。则存在正整数C和 n0,使得n>=n0,都满足0<=T(n)<=C*f( n)
另外算法的时间复杂度不仅仅只是依赖以问题规模n,同时也取决于输入参数的性质(比如:数据的初始值);例如以下例子:
在数组中A[0……N-1],查找最大值K
i = 1;while(i>=0&&A[i] !=K) i--;return i;
在此算法,时间复杂度不仅与最内层循环(i–)的赋值次数有关,还有A数组中的各元素值和目标最大值K有关:
1.若A中没有与K相等的数,则算法中的(i–)的频度为f(n);
2.若A的最后一个元素的值与K相等。则(i–)的频数为f(n) = 0;
以下是常见的几个复杂度概念:
最坏时间复杂度:在最坏情况下的时间复杂度;
平均时间复杂度:所有可能输入实例在等概率出现的情况下,算法的期望运行时间。
最好时间复杂度:在最好的情况下,算法的时间复杂度。
一般情况下总是先考虑最坏时间复杂度,以保证算法的时间 复杂度不会超过这个最大值。
时间复杂度的两个基本规则:
1.加法法则:
T(n)=T1(n) + T2(n) = O(f(n)) + O(g(n)) = O(max(f(n),g(n)));
2.乘法法则:
T(n) = T1(n)T2(n) = O(f(n)) O(g(n)) = O(f(n)*g(n))
3.常见的时间复杂度比较:
O(1)< O(log2n)< O(n) < O(nlog(2n))< O(n^2)< O(n^3)< O(2^n)
- 数据结构算法和算法效率评价
- 数据结构算法评价四个标准
- 数据结构与算法(Python)-一般概念和算法效率分析
- 数据结构-算法效率的度量-时间复杂度和空间复杂度
- 常用数据结构和算法操作效率的对比总结
- 数据结构与算法系列-算法的特征、要求、评价
- 数据结构的选择与算法效率
- 数据结构-各种排序算法效率对比图
- 数据结构的选择与算法效率
- 数据结构学习实录二—算法的评价
- 算法的概念和评价以及查找算法
- 算法效率
- 算法和数据结构
- 学习数据结构和算法
- 算法和数据结构试题
- JAVA数据结构和算法
- 数据结构和算法
- 算法和数据结构词典
- Android 7.0与6.0多语言效果对比以及遇到的坑
- 三、使用鼠标控制飞机,实现风骚走位(雷霆战机)
- 四、子弹类的创建,飞机子弹发射与无用子弹的销毁(雷霆战机)
- Zookeeper系列—Linux下的安装
- 六、爆炸效果的产生及销毁(雷霆战机)
- 数据结构算法和算法效率评价
- 七、完善:飞机生命值和子弹杀伤力(雷霆战机)
- 八、血条的制作和boss敌人的产生(雷霆战机)
- 九、产生珍宝,用于补血或升级子弹(雷霆战机)
- Android 在使用webview报错 A WebView method was called on thread 'Thread-2599'
- Git 提交本地工程到服务器
- 校验2validate校验
- MySQL从命令行导入SQL脚本时出现中文乱码的解决方法
- CSS--文本溢出处理