首页 > 编程语言 > 详细

算法 一些基本概念

时间:2020-01-12 11:37:01      阅读:54      评论:0      收藏:0      [点我收藏+]

(以下是本人在学习程杰老师的《大话数据结构》所做的笔记)

一、算法的定义

算法(Algorithm)是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

二、算法的特性

1.输入输出 2.有穷性 3.确定性 4.可行性

三、算法的要求

1.正确性 2.可读性 3.健壮性 4.时间效率高和存储量低

四、算法效率的度量方法

1.事后统计方法(不科学、不准确) 2.事前分析估算方法

在分析程序的运行时间时,最重要的是把程序看成独立于程序设计语言的算法或一系列步骤。

五、算法的渐近增长

函数的渐近增长(概念):给定两个函数 f(n) 和 g(n),如果存在一个整数N,使得对于所有的 n>N, f(n) 总是比 g(n) 大,那么我们说 f(n) 的增长渐近快于 g(n) 。

(我的理解)就是给两个函数,n表示他们的规模,但n大于某一个值的时候,一个函数的值总是比另一个函数的大,那么我们可以理解这个函数渐近增长较快。

六、算法的时间复杂度(重点、难点)

1.算法的时间复杂度定义:在进行算法分析时,语句总的执行次数 T(n) 是关于问题规模n的函数,进而分析 T(n) 随n的变化情况并确定 T(n) 的数量级。算法的时间复杂度(算法的时间量度)记作 T(n) = O(f(n))。表示随着问题规模n的增长,算法执行的时间的增长率和 f(n) 的增长率相同,称作算法的渐近时间复杂度,简称时间复杂度。其中 f(n) 是问题规模n的某个函数。

2.大O阶方法

(1)用常数1取代运行时间中的所有加法常数。

(2)在修改后的运行次数函数中,只保留最高阶项。

(3)如果最高阶项存在且不为1,则去除与这个项相乘的常数,得到的结果就是大O阶,即时间复杂度。

3.常见的时间复杂度所消耗时间的大小

O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n) 

算法 一些基本概念

原文:https://www.cnblogs.com/181118ljh123/p/12182122.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!