数据结构-算法时间复杂度

news2024/11/13 11:06:32

1.算法的时间复杂度取决于一段程序中基本运算的频度

2.基础规则

1.加法:O(n) = O(max(F(n),G(n))
2.乘法:O(n) = O(F(n)*G(n))
3.取基本运算中n增长最快的项:F(n) = an³+bn²+cn 时间复杂度为O(n³)

3. 例子

接下来举几个例子以及如何去算一段程序的时间复杂度O()。
1.

i = n;
while(i > 0 && A[i] != 10) //A[i]是一个数组
	i --;
return i;

a.当A[i]中没有数字10时,i - -共执行了n次,则这段代码的F(n) =n
b.当这段代码A[i] = 10,则程序不会进入循环,i - -执行0次
此程序的最坏时间复杂度是O(n),最好时间复杂度是O(1),平均时间复杂度是O(n/2)也就是O(n)。

2.递归

int test(int n)
{
	if(n > 0)return 1;
	else return n * test(n - 1);
}

求的是一个简单的递减数列,n*(n-1)(n-2)…*1;当n是10时,test(int 10)一共运行10次。即此算法的时间复杂度是O(n)

3.log₂n
a.

int i = 1;
while(i <= n)
{
	i = i * 2;
}

设程序i = i * 2;运行的次数是t,则在这里插入图片描述
其中i = 1,则 t <= log₂n 即最坏运行log₂n次,其时间复杂度为O(log₂n)。

b.折半查找

int low = 0,high = array.length() - 1,mid;
while(low <= high)
{
	mid = (low + high) / 2;   // 向下取整
	if(array[mid] == key)return mid;
	else if(array(mid) < key){
		low = mid + 1;
	}
	eles high = mid - 1;
}
return -1;     // 查找失败

每次查找不成功,问题的规模就会缩减原来的一半,与上一例同理,所以是最坏的情况的时间复杂度依然是 O(log₂n)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/536524.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt与其他行业的结合

chatgpt的应用场景非常广泛&#xff0c;其中一些主要应用场景包括以下几个方面&#xff1a; 1. 自然语言处理&#xff1a;chatgpt作为一种强大的机器学习算法&#xff0c;在自然语言处理领域得到了广泛应用。例如&#xff0c;它可以用来完成机器翻译、情感分析、文本分类等任务…

C语言的标准演变及编程机制

目录 C语言的标准 K&R C C89 C90 C99 C11 C18 C2x C语言的编程机制 示例 1.预处理(Preprocessing) 2.编译(Compilation) 3.汇编(Assemble) 4.链接(Linking) 结语 参考文献 C语言的标准 c语言标准的发展主要分为以下几个阶段&#xff1a; K&R C 1978…

【C++】类的属性和行为

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01;时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、封装 3、总结 1、缘起 C 面向对象的三大特性为&#xff1a;封装&#xff0c;继承和多态。C 认为 万事万物皆为对象&a…

刷题day66:最后一块石头的重量II

题意描述&#xff1a; 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能结果如下&a…

SRM系统是什么?有什么作用?企业如何应用SRM系统?

一、什么是SRM系统 到底什么是SRM系统&#xff1f; SRM&#xff1a;Supplier Relationship Management&#xff0c;供应商关系管理。 SRM是一种致力于实现与供应商建立和维持长久、紧密伙伴关系的管理思想和软件技术的解决方案&#xff0c;实现从采购需求的下达、审批、招标以…

SpringBoot定时任务里的多线程

SpringBoot定时任务里的多线程 提示前言遇到的问题验证与解决验证单线程执行单任务分析代码及结果 单线程执行多任务 解决实现单任务的多线程为每个任务创建一个子线程 解决多任务的多线程设定固定容量线程池动态设定容量线程池固定线程池和动态线程池的选择 简单总结借鉴及引用…

基于卷积的图像分类识别(三):VGGNet

系列文章目录 本专栏介绍基于深度学习进行图像识别的经典和前沿模型&#xff0c;将持续更新&#xff0c;包括不仅限于&#xff1a;AlexNet&#xff0c; ZFNet&#xff0c;VGG&#xff0c;GoogLeNet&#xff0c;ResNet&#xff0c;DenseNet&#xff0c;SENet&#xff0c;Mobile…

分布式锁解决方案_Redis实现的分布式锁原理

获取锁 互斥&#xff1a;确保只有一个线程获得锁 添加锁 利用setnx的互斥性 启动Redis的我们进行测试看看怎么能某个数据来获得锁 setnx命令表示上锁只要是aa被创建出来我们不删除aa或者设定时间自动删除&#xff0c;那么这把锁就不能被释放开 释放锁 手动释放锁 如果我们…

Ubuntu20.04安装VTK8.2

Ubuntu20.04安装VTK8.2 相关依赖的安装安装步骤参考文献相关依赖的安装 sudo apt install checkinstall sudo apt-get install cmake-curses-gui sudo apt-get install freeglut3-dev sudo apt install libqt5x11extras5-dev sudo apt install cmake-qt-gui安装步骤 1、从官网…

【运筹优化】元启发式算法详解:禁忌搜索算法(Tabu Search,TS)+ 案例讲解代码实战

文章目录 一、介绍二、The Classical Vehicle Routing Problem 经典的车辆路径问题三、基本概念3.1 历史背景3.2 禁忌搜索3.3 搜索空间和邻域结构3.4 Tabus 禁忌3.5 解禁准则3.6 简单禁忌搜索的模板3.7 终止标准3.8 概率TS和候选列表 四、中级概念4.1 搜索强化4.2 多样化4.3 允…

Maven基础使用

Maven 学习目标 理解Maven的用途掌握Maven的基本操作掌握Maven如何创建Web项目 Maven是什么 面临问题 在学习Maven之前&#xff0c;我们先来看一下我们现在做的项目都有哪些问题。假设你现在做了一个crm的系统&#xff0c;项目中肯定要用到一些jar包&#xff0c;比如说myb…

opencv_c++学习(九)

一、图像二值化 固定阈值二值化 threshold ( lnputArray src, outputArray dst,double thresh, double maxvall, int typesrc:待二值化的图像&#xff0c;图像只能是CV_8U和CV_32F两种数据类型。对于图像通道数目的要求和选择的二值化方法相关。 dst:二值化后的图像&#xff…

【数据结构】哈希表上——开放寻址法

文章目录 前言映射哈希冲突开放寻址法思路分析结构分析函数实现插入删除寻找 结语 前言 大家好久不见&#xff0c;今天来讲解一下哈希表的基本原理并使用开放寻址法实现简单哈希表。 映射 哈希表的实现思路就是将一组数据映射成另外一组可以直接查找的数据&#xff0c;假如有…

【LeetCode】每日一题:链表部分经典题型

文章目录 1.反转链表2.链表的中间节点3.合并两个有序链表4.相交链表5.环形链表6.环形链表Ⅱ ​&#x1f47b;内容专栏&#xff1a;《LeetCode刷题专栏》 &#x1f428;本文概括&#xff1a;归纳链表部分经典题型。206.反转链表、876.链表的中间节点、21.合并两个有序链表、160.…

如何优雅地彻底解决 antd 全局样式问题

背景 由于某些原因&#xff0c;我们团队负责在组件 上做二次开发&#xff0c;简单理解就是封装组件&#xff0c;组件库选择了 antd&#xff0c;尴尬的是引入之后发现&#xff0c;父组件 自身是带一套全局样式的&#xff0c;而 子组件antd 又带了一套全局样式&#xff0c;导致 子…

字节原来这么容易进,是面试官放水,还是公司实在是太缺人?

本人211非科班&#xff0c;之前在字节和腾讯实习过&#xff0c;这次其实没抱着什么特别大的希望投递&#xff0c;没想到字节可以再给我一次机会&#xff0c;还是挺开心的。 本来以为有个机会就不错啦&#xff01;没想到能成功上岸&#xff0c;在这里要特别感谢帮我内推的同学&…

《程序员面试金典(第6版)》面试题 16.24. 数对和

题目描述 设计一个算法&#xff0c;找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对。 题目传送门 示例 1: 输入: nums [5,6,5], target 11 输出: [[5,6]]示例 2: 输入: nums [5,6,5,6], target 11 输出: [[5,6],[5,6]]提示&#xff1a; nums.length &…

基于物联感知和GNSS技术的铁塔安全监测解决方案

监测背景 电力铁塔是承载电力供应的重要设施&#xff0c;它的安全性需要得到可靠的保障。但是铁塔一般安装在户外&#xff0c;分布广泛&#xff0c;且有很多安装在偏远地区&#xff0c;容易受到自然、人力的影响和破环。因此需要使用辅助的方法实时监控通信塔的安全状态&#x…

5th-Generation Mobile Communication Technology(二)

目录 一、5G/NR 1、 快速参考&#xff08;Quick Reference&#xff09; 2、5G Success 3、5G Challenges 4、Qualcomm Videos 二、PHY and Protocol 1、Frame Structure 2、Numerology 3、Waveform 4、Frequency Band 5、BWP 6、Synchronization 7、Beam Management 8、CSI Fra…