IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 算法符号简单介绍 -> 正文阅读

[数据结构与算法]算法符号简单介绍

? 符号

theta 符号

在这我们用?(g(n)) 来表示一组函数:?(g(n)) = {f(n): 任何大于0的常数 c1, c2, 和 n0 满足 0<=c1g(n)<=f(n)<=c2g(n),对于所有的 n>=n0}.

我们说g(n) 是f(n) 的渐近紧范围 (asymptotically tight bound)。

因为?(g(n)) 的定义要求每个符合?(g(n)) 要求的f(n) 得是渐近不是负数的 (asymptotically non-negative),也就是说,无论n 有多大,f(n) 都不会是负数。

函数g(n) 本身必须是渐近不是负数 (asymptotically non-negative) 或则集合?(g(n)) 是空集。

O 符号 大写

O 大写符号

在这我们用O(g(n)) 来表示一组函数:

O(g(n)) = {f(n): 任何大于0的常数 c 和 n0 满足 0<=f(n)<=cg(n),对于所有的 n>=n0}.

我们说g(n) 是f(n) 的渐近上范围 (asymptotically upper bound)。

注意:f(n)=?(g(n)) 说明了f(n)=O(g(n)) ,因为? 符号是个比O 符号强的符号;所以,我们可以说?(g(n)) ? O(g(n)),?(g(n))是O(g(n)) 的子集。

Ω 符号 大写

omega 大写符号

在这我们用Ω(g(n)) 来表示一组函数:

Ω(g(n)) = {f(n): 任何大于0的常数 c 和 n0 满足 0<=cg(n)<=f(n),对于所有的 n>=n0}.

我们说g(n) 是f(n) 的渐近下范围 (asymptotically lower bound)。

这里说个理论,如果对任何两个函数f(n) 和 g(n),仅且仅只有当f(n)=O(g(n)) 和f(n)=Ω(g(n)),我们会有?(g(n))。

o 符号 小写

o 小写符号

在这我们用o(g(n)) 来表示一组函数:

o(g(n)) = {f(n): 任何大于0的常数 c,存在大于0的 n0 满足 0<=f(n)<cg(n),对于所有的 n>=n0}.

我们说g(n) 是f(n) 的上范围但不是渐近紧 (upper bound that is not asymptotically tight)。

而且,在o 符号中,当n 越来越接近无穷大,函数f(n) 和g(n) 的关系会变得越来越无关紧要;也就是说,lim x → ∞ (f(n)/g(n)) = 0.

ω 符号 小写

omega 小写符号

在这我们用ω(g(n)) 来表示一组函数:

ω(g(n)) = {f(n): 任何大于0的常数 c,存在大于0的 n0 满足 0<=cg(n)<f(n),对于所有的 n>=n0}.

我们说g(n) 是f(n) 的下范围但不是渐近紧 (lower bound that is not asymptotically tight)。

而且,在o 符号中,当n 越来越接近无穷大,函数f(n) 和g(n) 的关系会变得越来越重要;也就是说,lim x → ∞ (f(n)/g(n)) = ∞.

测试算法时间的程序

下面这段伪代码是以纳秒为单位计算的,可以在实际中相对准确地验证我们的理论时间。

// Java代码,测试程序运行的时间
// 伪代码 
long startTime=System.nanoTime();   // 获取开始的时间 
doSth();  // 算法内容 
long endTime=System.nanoTime(); // 获取结束的时间 
System.out.println("Running time of algorithm: " + (end-start) + "ns");
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-29 12:21:18  更:2022-04-29 12:25:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:01:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码