博主回归!数据结构篇启动

ops/2024/10/17 16:40:00/

目录

1>>闲话

2>>数据结构前言

3>>复杂度的概念

4>>时间复杂度

5>>大O渐进表示法

6>>总结


1>>闲话

        家人们好久不见,小编军训终于是结束了,大一事情太多了,这几天没时间健身,没时间学习,也没时间发博客,在这先跟大家说声对不起!,忙着各种开会、讲座、竞选、运动会、社团、部门等等,不过从今天开始,小编应该会周更2-3篇,直到学完数据结构c语言的后续章节可能会在国庆节补出来,敬请期待!谢谢!

2>>数据结构前言

        很多小白肯定跟我学之前一样,不理解:什么是数据结构为什么要学数据结构数据结构和算法有啥子区别这几个问题不难回答:
第一数据结构是计算机存储数据,管理数据的方式,比如数组存数据,我们可以通过循环一次性处理数组里的数据,这就是数据结构

第二:学习数据结构能让我们具有一些解决复杂问题的能力,通常复杂的问题数据量都很大,那么管理数据成了难题,故学习了数据结构就可以又快又方便的管理数据

第三:算法就是定义良好的计算过程,通俗点讲就是一系列的计算步骤,通过优质的算法快速的解决过程,再用优质的数据结构快速管理数据,那么在难的题都如同庖丁解牛,迎刃而解

3>>复杂度的概念

        一般衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,(插闲话:小编爱看玄幻小说,很多主角技能厉害的也跟时间空间相关,所以小编在想,如果我们算法可以一直往高处学,没有上界,那么我们能不能通过代码突破时空从而升维,哈哈哈这只是一个想法,要实现那肯定务必要学精算法!小编会努力的!)也就是时间复杂度和空间复杂度!

时间复杂度是衡量一个算法运行的快慢

空间复杂度是衡量一个算法运行所需要的额外空间

不过现在一般不怎么看空间复杂度,因为我们现在不管是电脑还是手机,内存和外存(硬盘)都很大了。但是我们还是要学,接下来我们一起来看看:

4>>时间复杂度

        时间复杂度是一个函数式子T(N),它描述了该算法的运行时间,肯定有人跟我有一样的疑问,为什么不直接计算程序运行时间呢?首先,编译器的新旧程度会影响运算的快慢,其次,处理器的好坏也会影响运算的快慢(跟你打游戏卡不卡一个道理),再者,我们只有写完程序才能知道运行时间。因此:不能直接计算,引入T(N)概念:

        T(N)是计算了程序的运行次数。我们在这里要进行抽象的概念,假设每条语句的执行时间是一样的,不管你是a=1还是a=10000000^1000等等,都基本一样(实际有一内内区别),那么我们能知道你运行次数越多,那么运行时间越大。那么同样一题,答案运行次数少的算法一定是比运行次数多的算法来的好的。

这个代码它的时间复杂度T(N)=N;

5>>大O渐进表示法

        有三条规则分别是:

1.时间复杂度T(N)中要抓大头,什么意思呢?也就是保留高阶项,去掉低阶项,如果T(N)=N^2+N+234那么O(N)=N^2

2.高阶项常数系数忽略不计,如果T(N)=12312N^2+N+234那么还是O(N)=N^2,为什么呢?很多同学在这有疑问,因为当N无穷大时,它的常数系数多少乘它都显得苍白无力

3.若T(N)中只有常数项,那么用常数1取代,如果T(N)=123121212312,那么O(N)=1,这里不管常数多大,结果都是1。

来看一道例题:

这里每调用一次函数,运行次数就加1,那么根据图片我们能看出它是N!执行次数就是N次,所以O(N)就等于1;

通常我们说的时间复杂度都是使用O(N)而不是T(N)

6>>总结

        今天小编就学了这么多,总结一下就是了解了数据结构以及复杂度、算法的概念,学习了时间复杂度T(N)的计算方法,以及O(N)表示法,希望看这篇文章的同学都能够有所收获,小编在这里谢谢大家的耐心观看,一起进步,一起加油!


http://www.ppmy.cn/ops/119182.html

相关文章

PyCharm开发工具的安装和基础使用

打开官网:https://www.jetbrains.com/ 切换中文语言, 点击开发者工具 → 选择PyCharm, 点击下载, 初学者下载免费使用的社区版(community)就够了, 点击下载, 点击下一步&am…

部署wordpress项目

一、先部署mariadb 二、在远程登录工具上进行登录测试,端口号为30117,用户为 root,密码为123 三、使用测试工具: [rootk8s-master aaa]# kubectl exec -it pods/cluster-test0-58689d5d5d-7c49r -- bash 四、部署wordpress [root…

帆软SQL参数下拉框设置

1、配置数据库查询 select * from SALES_BASIC where 地区 ‘${dept}’ 2、配置参数 3、展示结果

AtCoder Beginner Contest 373(ABCDEF 题)视频讲解

A - September Problem Statement There are 12 12 12 strings S 1 , S 2 , … , S 12 S_1, S_2, \ldots, S_{12} S1​,S2​,…,S12​ consisting of lowercase English letters. Find how many integers i i i ( 1 ≤ i ≤ 12 ) (1 \leq i \leq 12) (1≤i≤12) satisfy …

本人实现了Prism对Fluent.Ribbon的适应(Fluent.Ribbon支持Prism架构)

#Fluent.Ribbon支持Prism架构# 饶了一些路,最终还是实现了【Fluent.Ribbon支持Prism架构】 最终实现结果描述如下(整理一下过一段时间上图):自定义的Modules,为Fluent.Ribbon样式,主界面中包括顶部的Ribb…

Thinkphp5x远程命令执行 靶场攻略

环境配置 靶场:vulhub/thinkphp/5-rce docker-compose up -d #启动环境 漏洞复现 1.访问靶场:http://172.16.1.198:8080/ 2.远程命令执⾏ POC: ?sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]system…

基于SpringBoot的休闲娱乐代理售票系统设计与实现

1.1研究背景 21世纪,我国早在上世纪就已普及互联网信息,互联网对人们生活中带来了无限的便利。像大部分的企事业单位都有自己的系统,由从今传统的管理模式向互联网发展,如今开发自己的系统是理所当然的。那么开发休闲娱乐代理售票…

什么是IPv6

目前国内的网络正在快速的向IPv6升级中,从网络基础设施如运营商骨干网、城域网,到互联网服务商如各类云服务,以及各类终端设备厂商如手机、电脑、路由器、交换机等。目前运营商提供的IPv6线路主要分为支持前缀授权和不支持前缀授权两种。 说…