算法设计与分析的基础知识(1)
来源:互联网 发布:淘宝店3c认证怎么办理 编辑:程序博客网 时间:2024/06/05 10:51
距离算法考试还有两周的时间,准备从现在开始用笔记的形式记录自己学习或复习算法课程的成果。不是有那么一句名言嘛:好记性不如烂笔头。Learn From Now!
算法是一系列解决问题的清晰指令,即对符合一定规范的输入,在有限时间内获得所要求的输出。
算法需要满足以下四大性质:
1、输入:有零个或多个外部量作为算法的输入(意思是可以没有输入)
2:输出:有一个或多个量作为输出(意思是必须有输出)
3、确定性:组成算法的每条指令清晰,无歧义。
4、有限性:算法中每条指令的执行次数或执行时间在有限的范围内。
在这里特别强调与程序的区别:
程序是算法用某种程序设计语言的具体实现。(可不满足以上四大性质)
以下是算法的几个要点:
1、算法的每个步棸都必须清晰,明确,不得有半点模糊。
2、算法所处理的值域必须仔细定义。
3、同样一种算法可以用不同的形式描述
4、同一个问题可能存在不同的解决算法
5、针对同一个问题不仅可能解决算法的思路差别很大,而且解题速度可能也会相差很大。
算法概念的再理解:
算法是问题的程序化解决方案,这些解决方案本身并不是答案,而是能够得到答案的精准指令。
名言:人们常说,一个人只有把知识教给别人,才能真正掌握它。实际上,一个人只有把知识教给“计算机”,才能真正掌握它。
算法中的所有理解性的概念中最难的当数复杂度分析了:时间复杂度、空间复杂度
算法复杂度分析是指算法在运行过程中所需的计算机资源量。
需要的时间资源的量叫时间复杂度;
需要的空间资源的量叫空间复杂度。
用T和S来表示时间复杂性和空间复杂性,有:
T=T(N,I)和S=S(N,I)。
N代表问题的规模,I代表输入。假定计算机上能够提供k种元运算,记为:O1,O2,…,Ok,
执行一次这些元运算所需要的时间分别为 t1,t2,…,tk。
对于给定算法A,所用到的,Oi的运算次数为ei,i=1,2,…,k,
因为ei 是N,I的函数,即:ei= ei(N,I)。
因此:
算法的时间的复杂度可从以下三个方面进行分析:
1、最坏情况下的时间复杂度
2、最好情况下的时间复杂度
3、平均情况下的时间复杂度
一般情况下,我们研究算法是研究其最坏情况下的时间复杂度。最好情况下的时间复杂度是在特例情况下发生的,不具有代表性。如果能保证最坏情况下的效率是理想的,对于问题的解决才是有意义的。
template<classType>
voidinsertion_sort(Type *a, intn)
{
Type key; // cost times
for (int i = 1; i< n; i++){ // c1 n
key=a[i]; // c2 n-1
int j=i-1; // c3 n-1
while( j>=0 && a[j]>key){ // c4 sum of ti
a[j+1]=a[j]; // c5 sum of (ti-1)
j--; // c6 sum of (ti-1)
}
a[j+1]=key; // c7 n-1
}
}
最坏情况下时间复杂度为:O(n*ti)最好情况下时间复杂度为:O(n)#这是在原来排好序的情况下
因此时间复杂度:O(n的平方)
本文为算法复习第一篇,也是算法迅速提升的开始。不足之处,日后改之。
- 算法设计与分析的基础知识(1)
- 算法设计与分析——基础知识
- 算法设计与分析作业(1)
- 算法分析的基础知识
- 算法设计与分析 (1)
- 算法分析设计与分析-蛮力法(1)--选择排序
- 贪心算法(算法分析与设计)
- 概率算法(算法分析与设计)
- 算法分析与设计
- 算法设计与分析
- 算法分析与设计
- 算法设计与分析
- 算法设计与分析
- 算法分析与设计
- 算法设计与分析
- 算法设计与分析
- 算法设计与分析
- 算法设计与分析
- #9 异步路由
- python -- 格式化输出
- idea中打开terminal
- 程序人生
- Linux 可执行文件结构与进程结构
- 算法设计与分析的基础知识(1)
- Excel VBA高效办公应用-第十二章-工资表的录入与工资表的建立-Part1 (工资表的录入)
- 方舟
- ASCII 编码
- GOT与PLT
- 【linux 命令】用户和组
- java和web基础 (三)
- 标准C语言中的文件操作函数的内存版
- Java实现-螺旋矩阵1