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

目录

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)表示法 ,希望看这篇文章的同学都能够有所收获,小编在这里谢谢大家的耐心观看,一起进步,一起加油!

相关推荐
苦藤新鸡2 小时前
41.有序数组(二叉搜索树)转平衡二叉树
数据结构·力扣
毅炼4 小时前
hot100打卡——day14
java·数据结构·算法·leetcode·ai·深度优先·哈希算法
DLGXY4 小时前
数据结构——双向循环链表的建立、添加、遍历(十三)
数据结构·链表
C雨后彩虹4 小时前
优雅子数组
java·数据结构·算法·华为·面试
漫随流水4 小时前
leetcode回溯算法(46.全排列)
数据结构·算法·leetcode·回溯算法
睡一觉就好了。5 小时前
直接选择排序
数据结构·算法·排序算法
芬加达5 小时前
leetcode221 最大正方形
java·数据结构·算法
知无不研5 小时前
实现一个整形栈
c语言·数据结构·c++·算法
红豆诗人7 小时前
数据结构--顺序表
数据结构·顺序表
季明洵7 小时前
备考蓝桥杯第四天
java·数据结构·算法·leetcode·链表·哈希算法