【数据结构笔记02】什么是算法
本次笔记内容:
1.2.1 算法的定义
1.2.2 什么是好的算法
1.2.3 复杂度的渐进表示
文章目录
- 算法
- 例:选择排序算法的伪码描述
- 算法的优劣
- 例:打印N个整数递归
- 例:求多项式的值
- 什么是好的算法?
- 复杂度的渐进表示法
算法
算法是一个有限的指令集,一定在有限步骤之后终止,产生输出。
- 每一条指令必须有充分明确的目标,不可以有歧义;
- 计算机能处理的范围之内;
- 描述应不依赖于任何一种计算机语言以及具体的实现手段。
例:选择排序算法的伪码描述
算法的优劣
- 空间复杂度S(n),占用存储单元的长度
- 时间复杂度T(n),耗费时间的长度
例:打印N个整数递归
在调用PrintN(99999)前,PrintN(100000)由于还没有返回,其变量N=100000被存在内存中。以此类推。其空间复杂度与N呈线性关系。
例:求多项式的值
什么是好的算法?
在分析一般算法的效率时,经常只关注下面两种复杂度:
- 最坏情况复杂度Tworst(n)T_{worst}(n)Tworst(n)
- 平均复杂度Tavg(n)T_{avg}(n)Tavg(n)
- 通畅分析最坏情况复杂度
复杂度的渐进表示法
- T(n)=O(f(n))T(n)=O(f(n))T(n)=O(f(n))表示存在常数C>0C>0C>0,n0>0n_0>0n0>0使得当n≥n0n \ge n_0n≥n0时有T(n)≤C⋅f(n)T(n) \le C \cdot f(n)T(n)≤C⋅f(n)
- T(n)=Ω(f(n))T(n)=\Omega (f(n))T(n)=Ω(f(n))表示存在常数C>0C>0C>0,n0>0n_0>0n0>0使得当n≥n0n \ge n_0n≥n0时有T(n)≥C⋅f(n)T(n) \ge C \cdot f(n)T(n)≥C⋅f(n)
- T(n)=Θ(f(n))T(n)=\Theta (f(n))T(n)=Θ(f(n))表示存在常数C>0C>0C>0,n0>0n_0>0n0>0使得当n=n0n = n_0n=n0时有T(n)=C⋅f(n)T(n) = C \cdot f(n)T(n)=C⋅f(n)
【数据结构笔记02】什么是算法相关推荐
- 【数据结构笔记32】排序算法概述、简单排序(冒泡排序、插入排序)、逆序对
本次笔记内容: 9.1.1 概述 9.1.2 冒泡排序 9.1.3 插入排序 9.1.4 时间复杂度下界 文章目录 排序算法前提条件 冒泡排序 插入排序 时间复杂度下界 逆序对(inversion) ...
- 【数据结构笔记31】Dijkstra算法例题:旅游规划(双权重),以及其他推广
本次笔记内容: 图习题1 核心算法 图习题2 其他推广 文章目录 旅游规划问题 核心算法 Dijkstra算法推广问题 要求数最短路径有多少条 要求边数最少的最短路 旅游规划问题 如上图,优先看权重1 ...
- 【数据结构----笔记5】插入排序算法之【希尔排序算法】
/*__________________________________________________________________________________________________ ...
- 【数据结构----笔记4】插入排序算法之【折半插入排序算法】
/*__________________________________________________________________________________________________ ...
- 【数据结构----笔记3】插入排序算法之【直接插入排序】
/*__________________________________________________________________________________________________ ...
- 【数据结构----笔记2】查找算法之【哈希查找或散列查找】
/*__________________________________________________________________________________________________ ...
- 【数据结构----笔记1】查找算法之【顺序查找和折半查找】
#include<iostream> #include<Windows.h> using namespace std;typedef int ElemType; /*_____ ...
- 归并排序算法 C++实现与时间复杂度(考过)恋上数据结构笔记
复习梗概 画图,自己整个数组,看代码写步骤,这个对理解归并排序还是很有必要的 合并两个有序数组的merge函数写法 时间复杂度的分析方法!!! 其实我觉得去b站找个动态的步骤分解视频也是不错的复习方法 ...
- 二、考研数据结构笔记——绪论(理解数据结构,算法,时间复杂度计算做题技巧)
一.数据结构基本概念 1.数据:数据是信息的载体.客观事物的一种表现形式.万事万物都能用数据表示出来. 2.数据元素:数据元素是数据的基本单位,一个数据元素有若干个数据项组成 3.数据项:构成数据元素 ...
最新文章
- log4j WARN 的解决办法
- 内容激活码jsp发送email
- python 遍历目录_Python遍历目录的4种方法实例介绍
- HDU-1069-Monkey and Banana
- ios遍历模块的方式
- LabelImg 批量生成标注图片文件夹序号(起始值+终值)
- 公司c语言面试题目,c语言面试最必考的十道试题,求职必看!!!
- ssm执行linux 指令,Linux逻辑卷快照及ssm的使用
- div.2/C. They Are Everywheretwo pointer
- windows下安装HTK3.4
- turbo c 2.0 官方下载_随剪app下载-随剪2.0安卓官方版下载v2.0
- 【机器学习系列】MCMC第二讲:Markov Chain Monte Carlo基本概念和核心思想
- 解决办法:My Endnote Library.enl constrains an incorrect path
- 这应该是史上最强的物理学科普(雄文)
- Microsoft Word For Mac 分节符
- 云队友丨两年还债4个亿!罗永浩,你可真行
- Matlab如何调整背景颜色
- 前端期末大作业 HTML+CSS 动漫主题网页作业 (1)
- Android ContextMenu
- Java基于JSP的网络音乐KTV点歌电台网站
热门文章
- 【Oracle】数据迁移工具(1):SQL Loader
- 解决 ModuleNotFoundError: No module named ‘requests‘ 问题
- Win10微软帐户切换不回Administrator本地帐户的解决方法【亲测】
- [Git]解决Permission denied, please try again问题
- MySQL命令行查询乱码解决方法:
- JavaScript console.log导致错误:“不赞成在主线程上使用同步XMLHttpRequest…”
- JavaScript截断/切片/修剪掉字符串中的最后一个字符
- python课程的中期报告_寒假中期学习报告
- (转)MTK 消息分发及窗口管理
- php rewrite重写,yaf 自定义重写路由rewrite