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

时间复杂度和运算

时间复杂度

        在算法和数据结构中,有许多时间复杂度比 O(1) 更差的情况。以下是一些常见的时间复杂度,按照从最优到最差的顺序排列:

  1. O(1): 常数时间复杂度,操作的运行时间与输入规模无关,是最理想的情况。

  2. O(log n): 对数时间复杂度,常见于分治算法和二分搜索等。

  3. O(n): 线性时间复杂度,操作的运行时间与输入规模成正比。

  4. O(n log n): 线性对数时间复杂度,常见于一些高效的排序算法,如快速排序和归并排序。

  5. O(n^2): 平方时间复杂度,常见于一些简单的嵌套循环算法-选择,冒泡,插入

  6. O(n^k): 多项式时间复杂度,其中 k 是常数,通常表示更高次幂的多项式时间复杂度。

  7. O(2^n): 指数时间复杂度,常见于一些指数级增长的问题,如穷举搜索。

  8. O(n!): 阶乘时间复杂度,通常表示在排列组合问题中的情况。时间复杂度表示形式

对应的"选泡插"排序时间复杂度都是O(n^2)空间复杂度是O(1) 

冒泡排序

时间复杂度:有两个for循环,第一个for循环是每个元素都要与其他的元素比较一遍,所以如果有N个元素,那么最外层的for循环的时间复杂度就是O(N),然后每一次外层的for循环,都会在内部的for循环中两两进行比较,又是O(N),因为是for循环嵌套.所以最后的时间复杂度就是O(n^2),空间复杂度的话-一般来说,除了用户要求的内存空间之外,额外申请的新的空间,则就是空间复杂度,这里用了一个temp临时变量来存储数据,所以该空间复杂度是O(1)   


public class 冒泡排序 {public static void main(String[] args) {int arr[] = {1, 2, 4, 5, 3, 6, 8, 7};//第一层for循环代表的是轮数,从第一个数开始,每个数都要和其他的数进行比较,所以有多少数,总共就有多少轮for (int i = 0; i < arr.length; i++) {//第二层for循环代表的是如果是逆序则换位置,因为有j+1 为了防止下标越界,所以在第二层for循环的时候,在减1for (int j=0;j<arr.length-i-1;j++){if (arr[j]>arr[j+1]){int tepm =arr[j];arr[j]=arr[j+1];arr[j+1]=tepm;}}}for (int i : arr) {System.out.print(i);}}}

 选择排序

package 算法;
public class 选择排序 {//先在[0~n-1]下标范围内找到最小值放到0位置上;//再在[1~n-1]下标范围内找到最小值放到1位置上;//依次如此操作,直到最后一个最小值【最大值】放在n-1位置上,完成排序操作;public static void main(String[] args) {int arr[] = {2, 1, 4, 5, 3, 6, 8, 7};for (int i = 0; i < arr.length-1; i++) {int minIndex=i;//最小值的下标设为第一个数的下标索引//然后第一个数和第二个数开始进行比较,看哪个数是最小的, 如果哪个是最小的,则记住最小值的下标,然后两个数进行交换,直到和其他的元素都比较完后,在走下一个数(也就是第一层for循环)for (int j=i+1;j<arr.length;j++){minIndex=arr[j]<arr[minIndex]?j:minIndex;}//交换位置int temp =arr[i];arr[i]=arr[minIndex];arr[minIndex]=temp;}for (int i : arr) {System.out.print(i);}}}

插入排序

public class 插入排序 {//思路就是:默认第一个数的位置已经确定.从第二个位置开始,如果比第一个位置的数小,则换位置,//第三个数再和第二个数比较,如果小于第二个数,则换位置,否则不换,然后继续和第一个位置上的数进行比较,小于则换位置.否则不换, 以此类推public static void main(String[] args) {int arr[] = {2, 1, 4, 5, 3, 6, 8, 7};for (int i = 1; i < arr.length; i++) {for(int j=i-1;j>=0&&arr[j]>arr[j+1];j--){int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}for (int i : arr) {System.out.print(i);}}
}

运算 

异或 (^)

        不同为1,相同为0              有两个特性: a^0=a    a^a=0

    例题1:

      a=1 ,b=2 在不使用第三个临时变量来完成两个数的交换,这里就可以用到异或方法

package 算法;/*** @author : gaoPengShuai* @date : 2023/11/21 21:21* @modyified By :*/
public class 异或 {public static void main(String[] args) {int a =1;int b=2;System.out.println("交换之前a的值是:"+a+" b的值是:"+b);//在不使用第三个变量来完成两个数的交换a=a^b;b=a^b;a=a^b;System.out.println("交换之后a的值是:"+a+" b的值是:"+b);}
}运行结果:交换之前a的值是:1 b的值是:2
交换之后a的值是:2 b的值是:1Process finished with exit code 0

例题2:

在一个数组中,一个数出现了奇数次,其他的数出现了偶数次.找到该出现奇数次的数
    public static void  test1(){//在一个数组中,一个数出现了奇数次,其他的数出现了偶数次.找到该出现奇数次的数int arr[] ={1,2,3,2,3,3,1};int temp =0;for (int i : arr) {temp^=i;}System.out.println(temp);}

注意:这两个例题就用到了,a^a=0 然后0^b=b的方法,直接将两个数进行交换,但是值得注意的是,a和b值可以相同,但是内存地址不能相同,因为自己异或自己的结果是0,会将之前的值覆盖为0

例题3:

找到一个数转为二进制后,提取出最右侧的1
    public static void  test3(){//找到一个数转为二进制后,提取出最右侧的1int a=5;int eor=a &(-a);//也可以写成 a&(~a+1)System.out.println("值是:"+eor);}运行结果:
值是:1

或 ( | )

 1 or 1=1,1 or 0=1,0 or 0=0,0 or 1=1。参加运算的两个对象只要有一个为1,其值为1

与 (&)

 0&0=0; 0&1=0; 1&0=0; 1&1=1.         两位同时为“1”,结果才为“1”,否则为0

取反( ~ )

~ 取反 ~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0

左移(<<)

左移1位:相当于将该数的二进制后面补一个0 ,原理整体向左边走,就是之前的值乘2;

右移(>>)

右移1位:相当于将该数的二进制后面少一位 ,原理整体向右走,就是之前的值除以2;

相关文章:

时间复杂度和运算

时间复杂度 在算法和数据结构中&#xff0c;有许多时间复杂度比 O(1) 更差的情况。以下是一些常见的时间复杂度&#xff0c;按照从最优到最差的顺序排列&#xff1a; O(1)&#xff1a; 常数时间复杂度&#xff0c;操作的运行时间与输入规模无关&#xff0c;是最理想的情况。 O…...

深入Tailwind CSS中的文本样式

深入Tailwind CSS中的文本样式 样式文本是网页设计的一个基本组成部分&#xff0c;而 Tailwind CSS 提供了范围广泛的实用类&#xff0c;使文本样式设计既高效又有效。 在本本中&#xff0c;我们将探索文本样式的常见最佳实践,讨论潜在的陷阱&#xff0c;并推荐设计方法。我们…...

系统优化软件Bitsum Process Lasso Pro v12.4,供大家学习研究参考

1、自动或手动调整进程优先级;将不需要抑制的进程添加到排除列表; 2、设置动态提升前台运行的进程/线程的优先级 3、设置进程黑名单,禁止无用进程(机制为启动即结束,而非拦截其启动)。 4、优化I/O优先级以及电源模式自动化。 5、ProBalance功能。翻译成中文是“进程平衡…...

敏捷DevOps专家王立杰:端到端DevOps持续交付的5P法则 | IDCF

今天有一个流行的英文缩写词用来刻画这个风云变幻的时代&#xff1a;VUCA&#xff08;乌卡时代&#xff09;。四个英文字母分别表示动荡性&#xff08;Volatility&#xff09;、不确定性&#xff08;Uncertainty&#xff09;、复杂性&#xff08;Complexity&#xff09;和模糊性…...

分布式锁详解

文章目录 分布式锁1. [传统锁回顾](https://blog.csdn.net/qq_45525848/article/details/134608044?csdn_share_tail%7B%22type%22:%22blog%22,%22rType%22:%22article%22,%22rId%22:%22134608044%22,%22source%22:%22qq_45525848%22%7D)1.1. 从减库存聊起1.2. 环境准备1.3. 简…...

Python入门学习篇(二)——算术运算符

1 算术运算符 1.1 分类 类型含义示例注意事项加号12➡3“12”“3"➡"123”数值之间,是加法运算(True为1,False为0)字符串之间,是进行拼接数值和字符串之间是不可以使用加法运算的,会报错-减号1-2➡-1*乘号2*3➡6/除法2/1➡2.0除法的结果永远为小数%取余10%2➡0//取…...

微软发布最新.NET 8长期支持版本,云计算、AI应用支持再强化

11 月 15 日开始的为期三天的 .NET Conf 在线活动的开幕日上&#xff0c;.NET 8作为微软的开源跨平台开发平台正式发布。.NET 团队着重强调云、性能、全栈 Blazor、AI 和 .NET MAUI 是.NET 8的主要亮点。.NET团队在 .NET Conf 2023 [1]活动开幕式上表示&#xff1a;“通过这个版…...

达索系统3DEXPERIENCE WORKS 2024 Fabrication新功能

当发现产品的制造环节&#xff0c;以及因产品模型本身的设计而导致制造环节存在不合理性&#xff0c;从而导致加工制造成本增加。 快速判断&#xff0c;轻松协作 在达索系统3DEXPERIENCE WORKS 2024中我们可以快速的判断产品的可制造性&#xff0c;以及快速与前端设计沟通协作…...

Web3与Web3.0: Web3指的是去中心化和基于区块链的网络,Web3.0指的是链接或语义网络。

目录 Web3与Web3.0: Web3指的是去中心化和基于区块链的网络 Web3.0指的是链接或语义网络。...

98、Text2Room: Extracting Textured 3D Meshes from 2D Text-to-Image Models

简介 github 利用预训练的2D文本到图像模型来合成来自不同姿势的一系列图像。为了将这些输出提升为一致的3D场景表示&#xff0c;将单目深度估计与文本条件下的绘画模型结合起来&#xff0c;提出了一个连续的对齐策略&#xff0c;迭代地融合场景帧与现有的几何形状&#xff0…...

MySQL 优化器 Index Condition Pushdown下推(ICP)

ICP 测试 准备数据 CREATE TABLE icp (employee_id int(6) NOT NULL AUTO_INCREMENT,first_name varchar(20) DEFAULT NULL,last_name varchar(25) DEFAULT NULL,email varchar(25) DEFAULT NULL,phone_number varchar(20) DEFAULT NULL,PRIMARY KEY (employee_id) );insert i…...

ruoyi 若依框架采用第三方登录

在项目中&#xff0c;前后端分离的若依项目&#xff0c;需要通过统一认证&#xff0c;或者是第三方协带认证信息跳转到本系统的指定页面。需要前后端都做相应的改造&#xff0c;由于第一次实现时已过了很久&#xff0c;再次重写时&#xff0c;发现还是搞了很长时间&#xff0c;…...

dom api

dom的全称为Document Object Model,即文档对象模型.所谓文档就是html页面,对象就是js里的对象,通过这个模型把页面上的元素和js里的对象关联起来. 下面是关于dom api的一些常用方法 1.获取元素 使用querySelector()方法获取一个元素 使用querySelectorAll()方法获取所有元素 当…...

音视频项目—基于FFmpeg和SDL的音视频播放器解析(二十一)

介绍 在本系列&#xff0c;我打算花大篇幅讲解我的 gitee 项目音视频播放器&#xff0c;在这个项目&#xff0c;您可以学到音视频解封装&#xff0c;解码&#xff0c;SDL渲染相关的知识。您对源代码感兴趣的话&#xff0c;请查看基于FFmpeg和SDL的音视频播放器 如果您不理解本…...

Qt项目打包发布超详细教程

https://blog.csdn.net/qq_45491628/article/details/129091320...

简单递归题

本来不想用递归做的&#xff0c;最后还是用了 题目如下&#xff1a; 洪尼玛有 n 块长度不同的木板&#xff0c;他想用这些木板拼成一个等边三角形的围栏&#xff0c;好将他的草泥马养在这个围栏里面。现在&#xff0c;给你这 n 块木板的长度&#xff0c;洪尼玛想知道他能否拼…...

再生式收音机踩坑记

下载《A Simple Regen Radio for Beginners》这篇文章也有好几年了&#xff0c;一直没有动手&#xff0c;上周末抽空做了一个&#xff0c;结果相当令人沮丧&#xff0c;一个台也收不到&#xff0c;用示波器测量三极管振荡波形&#xff0c;只有在调节再生电位器R2过程中&#xf…...

稻谷飘香金融助力——建行江门市分行助力乡村振兴

7月的台山&#xff0c;稻谷飘香。在大耕户李胜业的农田里&#xff0c;金灿灿的稻谷翻起层层稻浪&#xff0c;收割机在稻浪里来回穿梭&#xff0c;割稻、脱粒、装车等工序一气呵成。空气中弥漫着丰收的喜悦。 夏粮迎丰收的背后&#xff0c;是中国建设银行江门市分行&#xff08…...

【Pytorch】Visualization of Feature Maps(1)

学习参考来自 CNN可视化Convolutional Featureshttps://github.com/wmn7/ML_Practice/blob/master/2019_05_27/filter_visualizer.ipynb 文章目录 filter 的激活值 filter 的激活值 原理&#xff1a;找一张图片&#xff0c;使得某个 layer 的 filter 的激活值最大&#xff0c…...

js修改浏览器地址栏里url的方法

1、更新url某一参数的值 function updateQueryStringParameter(uri, key, value) {if (!value) { return uri }var re new RegExp("([?&])" key ".*?(&|$)", "i");var separator uri.indexOf(?) ! -1 ? "&" : &q…...

颠覆传统巡检模式:AI技术如何重塑安全生产新格局

作为"我ai去巡检"小程序的技术研发团队&#xff0c;我们亲眼见证了人工智能如何从实验室概念转变为守护安全生产的核心力量。今天&#xff0c;我们将深入剖析AI技术在安全生产领域的前沿应用&#xff0c;揭秘我们如何攻克技术难题&#xff0c;打造这款重新定义行业标…...

微信小程序流量主条件

流量主条件 1.小程序累计独立访客 (UV) > 500 2.无刷粉行为且未曾有严重违规记录 大家可以在评论区放出自己的小程序码&#xff0c;大家互相扫一下&#xff0c;让世界充满爱吧&#xff01; 这个是我所制作的小程序&#xff0c;大家扫过可以发出评论...

Latex学习第二坑——无法导入参考文献的bug

#latex 本人很喜欢使用latex来排版参考篇文献&#xff0c;确实非常方便。但是也有很多需要关注的小细节。下面结合这次文献编辑的经验。首先说bug的表现&#xff1a;&#xff08;1&#xff09;表现&#xff1a;使用pdflatexbibtexpdflatex*2的编译顺序&#xff0c;第一次编译会…...

Java高频面试考点场景题12

视频以 “银行网点” 类比&#xff0c;系统讲解了线程池的核心设计逻辑与面试高频考点&#xff0c;核心内容可总结为以下四部分&#xff1a;一、线程池的 “抠门” 原则线程池设计遵循 “能排队就不招临时工” 的反直觉原则&#xff1a;优先使用核心线程处理任务&#xff0c;队…...

AI加速器架构解析:从GPU到存内计算的技术演进

1. AI加速器的技术演进背景人工智能计算正面临前所未有的算力需求挑战。现代大型语言模型&#xff08;LLM&#xff09;的参数规模已经突破万亿级别&#xff0c;训练这样的模型需要数千块GPU连续工作数月&#xff0c;消耗数百万美元的计算资源。这种指数级增长的计算需求直接推动…...

从Wi-Fi到5G:聊聊‘升余弦滚降’这个老伙计,如何在现代通信里默默干活

从Wi-Fi到5G&#xff1a;升余弦滚降滤波器的现代生存指南 在咖啡厅里打开笔记本电脑&#xff0c;Wi-Fi图标瞬间满格&#xff1b;地铁上用手机刷短视频&#xff0c;5G信号流畅不卡顿——这些习以为常的场景背后&#xff0c;藏着一个通信工程师的老朋友&#xff1a;升余弦滚降滤波…...

Swagger接口文档除了在线看,还能怎么用?我整理了3种本地化导出方案(含Word/Excel)

Swagger接口文档的本地化应用&#xff1a;3种高效导出方案深度解析 在API开发领域&#xff0c;Swagger已经成为事实上的接口文档标准。但很多团队仅仅将其作为在线参考工具&#xff0c;却忽视了这些结构化数据的更大价值。想象一下&#xff1a;当客户要求提供完整的接口规范作为…...

TrueNAS Scale存储池与数据集权限配置详解:告别SMB共享失败和root权限困扰

TrueNAS Scale存储池与数据集权限配置实战指南 第一次在TrueNAS Scale里配置SMB共享时&#xff0c;我盯着那个"权限被拒绝"的红色错误提示整整半小时。作为从FreeNAS迁移过来的老用户&#xff0c;本以为轻车熟路&#xff0c;结果发现Scale版的权限系统完全是另一个次…...

2026届学术党必备的十大降重复率神器实测分析

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智慧技术迅疾发展给毕业论文撰写供给了全新范式&#xff0c;于选题阶段&#xff0c;能够…...

别再只盯着运放了!用TI INA826这类仪表放大器搞定传感器信号调理,实测避坑指南

实战指南&#xff1a;用TI INA826仪表放大器高效处理传感器信号 在嵌入式系统设计中&#xff0c;传感器信号的调理一直是硬件工程师的痛点。当压力传感器输出0-10mV的微弱差分信号&#xff0c;或者热电偶在工业噪声环境中传递温度数据时&#xff0c;传统的运放方案往往面临共模…...