程序=算法+数据结构

程序=算法+数据结构

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

你知道什么什么数据结构吗

查找、插入等操作的时间复杂度是多少

给出一个问题,问需要用到什么数据结构,时间和空间的复杂度分别是什么,可不可以优化。

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

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

名字解释

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

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

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

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

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

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

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

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

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)。

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

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值