【数据结构与算法】算法备忘
2017-10-15 19:36
232 查看
算法:对特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或者多个操作
五个特性:有穷性,确定性,可行性,输入,输出
输入输出:算法可以有0个或者多个输入,至少有一个或者多个输出。
有穷性:算法在执行有限的操作后,自动结束而不会出现死循环,并且每个步骤在可以接受的时间内完成。
确定性:算法每一步骤都有确定的含义,不会出现二义性
可行性:算法的每一步都是必须可行的,也就是说每一步都能通过执行有限次数完成。
算法设计要求:
1.正确性
2.可读性
3.健壮性
4.时间效率高和存储量低:办同样的事情 用 最少的时间,最小的存储完成。这里涉及 时间复杂度 和 空间复杂度。
算法效率度量方法:
1.事后统计法:计算运行时间进行对比
2.事前分析估算法:是 n,n2 logN等
算法的时间复杂度:
在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。
算法的时间复杂度,也就是算法的时间量度,记作:T(n)=O(f(n)),它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,
称作算法的渐近时间复杂度,简称为时间复杂度,其中f(n)是问题规模n的某个函数。用大O标记记法成为大O记法。
推导大O阶方法:
1.用常量1取代运行时间中的所有加法常量
2.在修改后的运行次数函数中,只保留最高阶项。
3.如果最高阶项存在而且不是1,则去除这个项相乘的常数,得到的结果就是大O阶。
常数阶是O(1);
线性阶是O(n);
对数阶是O(logn);
平方阶是O(n2);
时间复杂程度:
算法的空间复杂度:
S(n)=O(f(n))
估算方法:输入数据所占空间+程序所占空间+辅助变量所占空间
五个特性:有穷性,确定性,可行性,输入,输出
输入输出:算法可以有0个或者多个输入,至少有一个或者多个输出。
有穷性:算法在执行有限的操作后,自动结束而不会出现死循环,并且每个步骤在可以接受的时间内完成。
确定性:算法每一步骤都有确定的含义,不会出现二义性
可行性:算法的每一步都是必须可行的,也就是说每一步都能通过执行有限次数完成。
算法设计要求:
1.正确性
2.可读性
3.健壮性
4.时间效率高和存储量低:办同样的事情 用 最少的时间,最小的存储完成。这里涉及 时间复杂度 和 空间复杂度。
算法效率度量方法:
1.事后统计法:计算运行时间进行对比
2.事前分析估算法:是 n,n2 logN等
算法的时间复杂度:
在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。
算法的时间复杂度,也就是算法的时间量度,记作:T(n)=O(f(n)),它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,
称作算法的渐近时间复杂度,简称为时间复杂度,其中f(n)是问题规模n的某个函数。用大O标记记法成为大O记法。
推导大O阶方法:
1.用常量1取代运行时间中的所有加法常量
2.在修改后的运行次数函数中,只保留最高阶项。
3.如果最高阶项存在而且不是1,则去除这个项相乘的常数,得到的结果就是大O阶。
常数阶是O(1);
线性阶是O(n);
对数阶是O(logn);
平方阶是O(n2);
时间复杂程度:
算法的空间复杂度:
S(n)=O(f(n))
估算方法:输入数据所占空间+程序所占空间+辅助变量所占空间
相关文章推荐
- 【数据结构与算法】栈和队列 备忘
- 【数据结构与算法】线性表备忘
- 数据结构与算法
- 数据结构与算法_杂记_1
- 数据结构与算法——线性时间排序(计数排序、基数排序、桶排序)
- 数据结构中一些常用的算法
- 数据结构与算法(二)合并两个有序链表
- 数据结构与算法(Java)-002- Java功能复习
- 【算法学习笔记】08.数据结构基础 二叉树初步练习1
- 数据结构与算法的基础概念
- 【数据结构与算法 01】冒泡排序
- 数据结构与算法练习-Number/数字
- 数据结构与算法练习-Linked List/链表
- 计算机网络,操作系统,数据结构,算法设计,计算机组成原理,数据库,概率论 零散知识库
- 【算法学习笔记】11.数据结构基础 二叉树初步练习4
- [数据结构与算法] : 单向链表
- Java数据结构与算法---链表的实现
- 【数据结构与算法】二分查找
- 小猪的数据结构辅助教程——1.数据结构与算法绪论
- 经典数据结构与算法在经典软件(linux kernel)中的应用