前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是数据结构和算法

什么是数据结构和算法

作者头像
不作声
发布2020-11-17 12:45:43
3980
发布2020-11-17 12:45:43
举报
文章被收录于专栏:M不作声

❝程序=算法+数据结构 ❞

这是一句非常著名的话,凭借这一句话直接获得图灵奖,可想数据结构和算法有多重要。同时,在各个大厂招聘面试时,也会提到数据结构和算法。

❝你知道什么什么数据结构吗 查找、插入等操作的时间复杂度是多少 给出一个问题,问需要用到什么数据结构,时间和空间的复杂度分别是什么,可不可以优化。 ❞

所以一名优秀的程序员,应该了解和使用数据结构和算法。

那么什么是数据结构,算法又是什么呢。

名字解释

我的大学老师这样解释数据结构和算法:

❝数据结构是对「所有数据的元素和元素与元素关系的描述」,算法是「对特定问题求解步骤的描述」。 ❞

「数据」是描述客观事物的数和字符的集合,在计算机的角度,所有能输入到计算机中且能被计算机处理的符号都是数据。

「数据项」是具有独立含义的数据最小单位。

「数据结构」是以某种关系将数据联系在一起,而「算法」是对特定问题求解步骤的一种描述,是指定的有限序列。

在实现算法中需要使用到数据结构来减少步骤,提高效率。

一般来说,判定一个算法的好坏,有两方面的标准,一个是代码运行的时间,另一个是代码运行占用的空间,分别称为「时间复杂度」「空间复杂度」

我们一般用O来表示时间复杂度,如下代码:

代码语言:javascript
复制
for( i=1; i<=n; i++) {
  j = i;
  j++
}

这段代码会从i=1执行到i=n,代码执行了n次。代码的执行次数与n的大小有关,所以用O(n)来表示这段代码的时间复杂度。

常见的时间复杂度由小到大依次为:

  • O(1)
  • O(logN)
  • O(n)
  • O(nlogN)
  • O(n²)
  • O(n³)
  • O(2^n^)

在高中学过的数学就可以证明几种函数的增长趋势,当随着n变大,计算机运行时间也要变长,尤其是指数方式增长时,运行时间将漫长无比。在计算机中, 为了降低时间复杂度,有多种方法,一种是「空间换取时间」,如桶排序等;或者是优化算法,降低时间复杂度。

显然,时间复杂度只是一种增长趋势,而不是具体的使用了多少时间,空间复杂度同样不是计算程序具体使用了多少空间,而是「指一个算法在运行中,使用了多少临时空间的一个度量」

例如,如果在算法中定义了一个变量,那么空间复杂度就是常数级,也就是O(1)。如果定义了一个长度为n的数组,那么空间复杂度就是O(n)。

现在计算机的性能越来越好,空间资源可以说是足够多,所以算法优化主要是对时间复杂度的优化,甚至会用空间换取时间。

所以,知道了什么是数据结构和算法,接下来的文章开始学习数据结构和算法,一起向一名优秀的打工人进步吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大前端合集 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 名字解释
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档