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

《重生到现代之从零开始的数据结构生活》—— 复杂度

前言

进入代码世界已经有一阵了,C语言学的差不多了打算看看数据结构

以前都没想过我能学到这嘞哈哈哈哈

所以,《重生到现代之从零开始的数据结构生活》开始啦

数据结构

我们天天说数据结构怎么怎么了,那什么是数据结构你知道吗

数据结构(Data Structure)是计算机存储、组织数据的⽅式,指相互之间存在⼀种或多种特定关系的数据元素的集合

这么说可能有点抽象了,但是如果举一个例子:int arr[3]={0};不就是数据元素的集合吗,没错,他就是数据结构的一种,不过我们会有很多更为复杂的情况,只要这种简单的肯定是不够的,这就是我们学习数据结构的原因

算法

算法(Algorithm):就是定义良好的计算过程,他取⼀个或⼀组的值为输⼊,并产⽣出⼀个或⼀组值作为 输出。简单来说算法就是⼀系列的计算步骤,⽤来将输⼊数据转化成输出结果。

简单来说就是我们写的每一个成熟的代码,都是某种算法

但是我对他的了解也不深,所以只能讲解到这了

复杂度

之前在牛客上面刷题的时候,我写的代码就经常和讨论区的不一样

我的代码就会很复杂,逻辑也会很冗杂

但是当时的我并不care,想着把题目完成就行了,管他这么多,反正又不是我算

等到我打开一些对复杂度有要求的的题的时候我就懵了

不是哥们,我咋写代码你也管啊

至于那他怎么管,用什么管,管的标准是什么

让我们看看复杂度吧

算法在编写成可执⾏程序后,运⾏时需要耗费时间资源和空间(内存)资源 。因此衡量⼀个算法的好坏,⼀般是从时间和空间两个维度来衡量的,即时间复杂度空间复杂度

时间复杂度主要衡量⼀个算法的运⾏快慢,⽽空间复杂度主要衡量⼀个算法运⾏所需要的额外空间

其实从开始我说的大家也能看出来,有很多的地方都有在使用复杂度这一概念

在时间复杂度和空间复杂度中,由于现代科技的发达,让我们对空间的要求没有这么高,所以,复杂度基本指的就是时间复杂度

时间复杂度

在计算机科学中,算法的时间复杂度是⼀个函数式T(N),它定量描述了该算法的运⾏时间

实际上空间复杂度是在描述程序的时间效率,因为没有固定的时间,运行的时间可能会随着环境,cpu,内存等因素改变,所以主要算的就是运行的效率

时间复杂度的计算

计算复杂度的时候,我们不能精确的算出来程序执行的次数,因为很麻烦,所以我们只需要算出大概的执行次数然后比较他们执行次数的量级就行了

执行次数就是程序运行了多少次,程序没运行一次都算

复杂度的表⽰通常使⽤⼤O的渐进表示法

大O的渐进表示法

⼤O符号(Big O notation):是⽤于描述函数渐进⾏为的数学符号

大O的规则

  • 时间复杂度函数式T(N)中,只保留最⾼阶项,去掉那些低阶项,因为当N不断变⼤时, 低阶项对结果影响越来越⼩,当N⽆穷⼤时,就可以忽略不计了
  • 如果最⾼阶项存在且不是1,则去除这个项⽬的常数系数,因为当N不断变⼤,这个系数 对结果影响越来越⼩,当N⽆穷⼤时,就可以忽略不计了
  • T(N)中如果没有N相关的项⽬,只有常数项,⽤常数1取代所有加法常数

举个例子

void Func2(int N) 
{ int count = 0; //1(后面的数字就是运行的次数)for (int k = 0; k < 2 * N ; ++ k) 
{++count; //2n}int M = 10; //1while (M--) {++count;//10}printf("%d\n", count);//1

T (N) = 2N + 13

但是根据大O渐进表示法来看

时间复杂度就是:O(N)

这就是时间复杂度计算的过程


今天的知识讲解完啦,如果觉得有用可以点一下赞和关注,也可以先收藏以防需要时找不到哦,当然如果作者写的哪里有问题欢迎指出,我们一起进步!!!
祝看到这里的人天天开心哦(笔芯)


http://www.mrgr.cn/news/44918.html

相关文章:

  • Ollama接口系统详解
  • Mysql(六) --- 聚合函数,分组和联合查询
  • C++ 多线程
  • 千益畅行:团队游相关问题解答
  • 【算法】双指针(续)
  • 基于深度学习的多焦点图像融合系统【数据集+深度学习模型+源码+PyQt5界面】
  • 算法【从递归入手二维动态规划】
  • QT调用libusb库stm32407上下位机
  • 2024年9月底读书总结
  • 用java做一个简易版球球大作战
  • Java基础语法
  • 【MySQL】使用 JDBC 连接数据库
  • C语言的类型提升机制
  • Arduino UNO R3自学笔记22 之 Arduino电机的闭环控制(PID)
  • macos php开发环境之macport安装的php扩展安装,php常用扩展安装,port中可用的所有php扩展列表
  • 【可答疑】基于51单片机的倒车雷达测距(含仿真、代码、报告、演示视频等)
  • js操作元素的其他操作(4个案例+效果图+代码)
  • Chrome浏览器调用ActiveX控件--allWebOffice控件
  • OJ在线评测系统 微服务 用分布式消息队列 RabbitMQ 解耦判题服务和题目服务 手搓交换机和队列 实现项目异步化
  • 大厂面试真题:说一说CMS和G1