首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
编程语言
> 详细
架构师进阶之路——算法基础
时间:
2016-08-08 00:39:36
阅读:
169
评论:
0
收藏:
0
[点我收藏+]
标签:
算法
定义:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作
特性:五个基本特性,即输入、输出、有穷性、确定性、可行性
算法设计的要求
正确性:算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义性、能正确反映问题的需求、能够得到问题的正确答案
可读性:算法设计的另一个目的是为了便于阅读、理解和交流
健壮性:当输入数据不合法时,算法也能做出相关处理,而不是产出异常或莫名其妙的结果
时间效率高和存储量低:设计算法应该尽量满足时间效率高和存储量低的需求
算法效率的度量方法
事后统计方法(可操作性差,不采纳)
事前分析估算方法:在计算机程序编制前,依据统计方法对算法进行估算
算法程序在计算机上运行时间所消耗的时间取决于下列因素:
算法采用的策略、方法
编译产生的代码质量
问题的输入规模
机器执行指令的速度
函数的渐近增长
定义:给定两个函数f(n)和g(n),如果存在一个整数N,使得对于所有的n > N,f(n)总是比g(n)大,那么,我们说f(n)的增长渐近快于g(n)
依据:某个算法,随着n的增大,它会越来越优于另一算法,或者越来越差于另一个算法
我们可以忽略这些加法常数
与最高次项相乘的常数并不重要
最高次项的指数大的,函数随着n的增长,结果也会变得增长特别快
判读一个算法的效率时,函数中的常数和其他次要项常常可以忽略,而更应该关注主项(最高阶项)的阶数
算法时间复杂度
定义:在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n) = O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。其中f(n)是问题规模n的某个函数。
推导大O阶方法
1.用常数1取代运行时间中的所有加法常数
2.在修改后的运行次数函数中,只保留最高阶项
3.如果最高阶项存在且不是1,则去除与这个项相乘的常数
4.得到的结果就是大O阶
常数阶
线性阶
对数阶
平方阶
最坏情况与平均情况:写算法时,都要考虑这两个情况
架构师进阶之路——算法基础
标签:
原文地址:http://www.cnblogs.com/dulixiaoqiao/p/5747712.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
Spring Cloud 从入门到精通(一)Nacos 服务中心初探
2021-07-29
基础的排序算法
2021-07-29
SpringBoot|常用配置介绍
2021-07-29
关于 .NET 与 JAVA 在 JIT 编译上的一些差异
2021-07-29
C语言常用函数-toupper()将字符转换为大写英文字母函数
2021-07-29
《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
2021-07-28
4-1 YAML配置文件 注入 JavaBean中
2021-07-28
【python】 用来将对象持久化的 pickle 模块
2021-07-28
马拉车算法
2021-07-28
用Python进行冒泡排序
2021-07-28
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!