赞
踩
对算法问题求解方法和步骤的一种描述,它是指令的有限序列。其中每个表示一个或多个操作。
1.自然语言:英语、中文
2.流程图:传统流程图、NS流程图
3.伪代码:类语言:类C语言
4.程序代码:C语言程序、java语言程序
- 算法是解决问题的一种方法或一个过程,考虑如何将输入转换成输出,一个问题可以有多种算法。
- 程序是用某种程序设计语言对算法的具体实现
- 程序=数据结构+算法
- 数据结构通过算法实现操作
- 算法根据数据结构设计程序
- 正确性
正确性:算法满足问题要求,能正确解决问题
算法转化程序后要注意:
1.程序中不含语法错误
2.程序对于几组输入数据能够得出满足要求的结果
3.程序对于精心选择的、典型、苛刻且带有刁难型的几组输入数据能够得出满足要求的结果
4.程序对于一切合法的输入数据都能得出满足要求的结果
通常以第三条为衡量的标准
- 可读性
1.算法主要是为了人的阅读和交流,其次才是为计算机执行,因此算法应该易于人的理解
2.难读,会导致难调试
- 健壮性
当输入数据不合法时,算法也能做出相关处理,而不是产生异常或莫名其妙的结果
- 高效性
要求花费尽量少的时间和尽量低的存储需求
一个好的算法首先要具备正确性,然后是健壮性,可读性,在几个方面都满足的情况下,主要考虑算法的效率,通过算法的效率高低来评判不同算法的优劣程度。
算法效率以下两个方面来考虑:
1.时间效率:指的是算法所耗费的时间
2.空间效率:指的是算法执行过程中所耗费的存储空间
定义:算法时间效率可以用依据该算法编制的程序在计算机上执行所消耗的时间来度量,以下两种度量方法
- 事后统计
将算法实现,测量其时间和空间开销
缺点:
1.编写程序实现算法将花费较多的时间和精力
2.所得实验结果依赖于计算机的软硬件等环境因素,掩盖算法本身的优劣
- 事前分析
对算法所消耗的一种估算方法
算法运行时间 = 一个简单操作所需的时间 * 简单操作次数
- 若有某个辅助函数符f(n),使得当n趋近与无穷大时,T(n),f(n)的极限值为不等于零的常数,则称为f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称为O(f(n))为算法的渐进时间复杂度(O是数量级的符号),简称时间复杂度。
- 算法中基本语句重复执行的次数是问题规模n的某个函数f(n),算法的时间量度记作:T(n)=O(f(n)),它表示随着n的增大,算法执行的时间的增长率和f(n)的增长率相同,称为渐近时间复杂度
推导大O阶方法
推导大O阶:
1.用常数1取代运行时间中的所有加法常数
2.用修改后的运行次数函数中,只保留最高阶项
3.如果最高阶项存在且不是1,则去除与项相乘的常数。得到的结果就是大O阶。
常用的时间复杂度所耗费的时间从小到大依次是:
时间复杂度是由嵌套最深层语句的频度决定的
算法的空间复杂度通过计算算法所需的存储空间实现,算法空间复杂度的计算公式记作:S(n)=O(f(n)),其中,n为问题的规模,f(n)为语句关于n所占存储空间的函数。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。