当前位置: 首页 > news >正文

算法分析详解

自古老的公元前1世纪开始,《周髀算经》就作为中国最古老的天文学和数学著作。

《周髀算经》采用最简便可行的方法确定天文历法,揭示日月星辰的运行规律,包括四季更替,气候变化,南北有极,昼夜相推的道理。为后来者的生活作息提供了有力保障。

经过几个世纪的发展,到公元9世纪,波斯数学家al-Khwarizmi第一次在数学上提出了“算法”这个概念——演算法。

算法(Algorithm)是解题的步骤,可以把算法定义成解一确定类问题的任意一种特殊的方法。

在计算机科学中,算法代表用计算机解一类问题的精确、有效的方法。

算法分析是对一个算法需要多少计算时间和存储空间作定量的分析。

算法是指令的有限序列,其中每一条指令表示一个或多个操作。

算法有如下几个重要特性:

1.有穷性(每一步必须在有穷的时间内完成)

2.可行性(必须能通过已经实现的基本运算的有限次执行)

3.确定性(每一条指令没有二义性,相同输入必须相同输出)

4.一个算法有零个或者多个输出。

5.一个算法有一个或者多个输入。

一个好算法应该

1.正确性

简单理解为:

程序中没有语法错误,对于几个给定的输入输出都可以正确计算出来,对于精挑细选的带有刁难性的输入也能满足要求计算正确,程序对于一切合法输入都能正确计算出来。

2.可读性

易于理解

3.健壮性

当输入非法数据时,算法会恰当做出反应和处理。而不是中断程序进行。

4.高效性

即用时间复杂度和空间复杂度来衡量代码的高效性(通常两者不可兼得)

时间复杂度 :

即通常所说的算法执行所需要耗费的时间,时间越短,算法越好。

空间复杂度 :

1.程序保存所需要的存储空间大小。

2.程序在执行过程中所需要消耗的存储空间资源(定义的变量)。

下面列举一些常见的时间复杂度:

常数阶

O(1)

对数阶O(log2n)
线性阶O(n)
线性对数阶O(nlog2n)
平方阶O(n*n)
立方阶O(n*n*n)
......
k次方阶O(n的k次方)
指数阶

O(2的n次方)

相关文章:

  • 进程间通信(二)/共享内存
  • 边玩边学,13个 Python 小游戏真有趣啊(含源码)
  • 「TCG 规范解读」第7章 TPM工作组 TPM 总结
  • 七大排序经典排序算法
  • 带你一步步搭建Web自动化测试框架
  • 踩大坑:json格式存储wav二进制内容
  • ChatGPT 简介
  • 猜数字大小 II
  • Python3 pip
  • 【C语言】指针进阶
  • 两年外包生涯做完,感觉自己废了一半....
  • 加油站会员管理小程序实战开发教程10
  • 基于SpringBoot+vue的无偿献血后台管理系统
  • Redis底层原理(持久化+分布式锁)
  • SQL代码编码原则和规范
  • 一招鉴别真假ChatGPT,并简要介绍ChatGPT、GPT、GPT2和GPT3模型之间的区别和联系
  • 【MyBatis】| MyBatis的逆向⼯程
  • 2023年美赛C题Wordle预测问题二建模及Python代码详细讲解
  • 网络编程(一)
  • Linux生产者消费模型
  • 平安银行一季度净赚超140亿元降5.6%,营收降13.1%
  • 【社论】家政服务提质扩容,为何被一提再提
  • 陕西省药监局:未检出巨子生物“可复美”存在“表皮生长因子”
  • “替父追债被判寻衅滋事案”从犯获国赔,该案司法机关共赔偿217万元
  • 6名驴友庐山西海探险走失被追缴2万救援费,组织者被追缴4千
  • 回应社会关切,山西“订婚强奸案”审判长答问