那个让你头大的数据结构,用Python学会变简单吗?

前言

学完了基本的语言语法之后,接下来就应该学习数据结构这个让人脑壳大的的东西了,如果是计算机专业的同学一般都是在大二上学期学习数据结构这门课程,且肯定是学习的用C语言或者C++来实现的版本。用C语言实现的数据结构中一个非常重要的工具就是指针,但是大家在学C的时候肯定看到指针就头痛,我也一样,所以我的数据结构算是白学了,会做题就是不会敲代码。当我在学Python数据结构之前就在想,Python当中并没有指针这个东西啊,该怎么像C语言那样来实现链表、二叉树这些需要存储结点地址才能实现的数据结构呢?

什么是数据结构

在解决上面这个疑惑之前,我们首先要了解什么是数据结构?所谓数据结构啊就是研究数据之间的关联和组合形式,总结其中的规律,然后找出有用的结构,并将这些结构运用于数据的组织中,实现更高效的程序。说白了就是数据之间的的关系形式,像线性表、二叉树、图这些数据结构就是表示数据之间的关系,数据怎么在计算机中存储、我们怎么高效的表示和利用这些数据。当然我也不可能讲的很详细,具体的东西大家可以看看书。

为什么要学数据结构

这里我简单打个比方哈,如果将写好的程序比作战场,我们程序猿就是领军作战的将领,而我们所写的代码就是士兵和武器。那么数据结构这些东西是什么?我想肯定是兵法!
如果我们没有兵法在战场上拼刺刀,如此这般我们可能会胜利,可能会失败,即便胜利也会付出惨重的代价。我们写程序也是一样,解决一个问题的方式有很多种,有的时候虽然我们想到办法解决了这个问题,但是可能没有注意到程序的时间开销和效率问题,导致性能低下;有的时候虽然凭借某些别人开发的工具解决了效率问题,但是碰到其他的问题时又不知道如何解决,就知道暴力搜索啥的。
如果我们知道兵法,打仗时便课胸有成竹;同样如果我们学好了数据结构,写代码的时候就能游刃有余,找到问题的根源。
当然,如果我们只知兵法而不知实际情况就可能会成为纸上谈兵的赵括;同样,如果我们只去学数据结果而不去运用他,不去解决实际问题,不去写代码,不去刷题,到最后也是无用功。数据结构只是我们程序员的基本功,冰冻三尺非一日之寒,需要不断地努力学习积累。

时间复杂度和空间复杂度

时间复杂度

时间复杂度指的是代码的运行时间快慢的量级,有的代码运行时间快,那么他的时间复杂度就高;有的代码运行时间慢,那么他的时间复杂度就低。下面请看这一段代码就是来直观的描述代码的时间复杂度的:a+b+c=1000,a2+b2=c2求解满足这样要求的所有a,b,c的值。

import time
start_time = time.time()
for a in range(0, 1001):
    for b in range(0, 1001):
        
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值