(二) 算法分析基础
来源:互联网 发布:换手率软件 编辑:程序博客网 时间:2024/04/25 01:34
1.1 算法的时间复杂度性分析
算法是解决问题的方法,一个问题可以有多种解决方法,不同的算法之间就有了优劣之分。如何对算法进行比较呢?算法可以比较的方面很多,如易读性、健壮性、可扩展性等,但不是最关键的方面,算法的核心和灵魂是效率,也就是解决问题的速度。试想,一个需要运行很多年才能给出正确结果的算法,就是其他方面的性能再好,也是一个不实用的算法。
算法的时间复杂性。
算法的时间复杂性是以后总事前分析估算的方法,它是对算法所消耗资源的一种渐进分析方法,所谓渐进分析方法是指忽略具体机器、编程语言和编译器的影响,只关注在输入规模增大时算法运行时间的增长趋势。渐进分析的好处是大大降低了算法的分析难度,是从数量级的角度评价算法的效率。
输入规模和基本语句。
基本语句是执行次数与整个算法执行次数成正比的语句,基本语句对算法运行时间的贡献最大,是算法中最重要的操作。
int SeqSearch(int A[] ,int n, int k) //在数组a[n]中查找值为k的记录。
{
for(int i=0;i<n;i++)
{
if(A[i]==k) break;
}
if(i==n) return 0; //查找失败,返回失败标志0;
else return (i+1); //查找成功返回记录序号。
}
算法的运行时间主要消耗在循环语句,循环语句执行次数取决于带查找记录个数n和待查找值k在数组中的位置,每执行一次for循环,都要执行一次元素比较。因此,输入规模是带查找记录个数n,基本语句是比较操作(A[i] ==k)。
最好、最坏和平均情况。
最好情况(best case)不能作为算法性能的代表,因为发生的概览太小,对于条件的考虑太乐观了,当最好情况出现的概览较大时候,应该分析最好情况。
最坏情况(worst case):可以知道算法的运行时间,最坏情况坏到什么程度,这一点实时系统中尤其重要。
平均情况(average case):考虑各种情况发生的概率。
1.2 算法的空间复杂性分析
- (二) 算法分析基础
- 数据结构基础 算法复杂度分析(二) 典例篇
- 算法分析(二)
- 贪心算法基础(二)
- 数据结构基础(二):算法
- 排序算法分析(二)
- 《算法设计与分析基础》第一、二章
- 数据结构和算法分析(二) 算法分析
- spring源码分析(二)- 容器基础
- 基础算法(二) --- 控制反转
- 【翻译】计算机几何基础算法(二)
- 算法基础(二)---- 统计城市个数
- 基础算法(二)---数据结构之图
- 基础算法(二)---数据结构之树
- 基础算法(二)---数据结构之堆
- 基础算法(二)---数据结构之排序
- 基础算法--递归(二)
- 基础算法(二)
- 感冒了
- java基础
- Search a 2D matrix
- 多线程中的信号机制--sigwait()函数
- CRM上线之路 走上了CRM实施顾问-第117天上班 -第24周
- (二) 算法分析基础
- 人之初,性本善
- 包含.cpp而不是.h
- 再不学习就跟人聊不上了。。。
- 异步串行通讯和同步串行通讯区别
- 我那忧伤而又文艺的高中时代
- args.length与args...length的区别
- 冒牌排序
- 形参和实参的区别