算法与数据结构入门

本文介绍了算法与数据结构在编程中的重要性,通过Python实例解析了时间复杂度和空间复杂度的概念。文章指出,时间复杂度衡量代码执行次数,而空间复杂度关注额外内存使用。举例说明了O(1)、O(n)和O(n²)的时间复杂度,并指出在没有额外空间使用的场景下,空间复杂度通常为0。文章最后讨论了何时可以不考虑算法优化,并列举了常见时间复杂度的效率排序。
摘要由CSDN通过智能技术生成

算法与数据结构是程序员的内功之一,要想写出高质量高性能代码,优秀的算法基础是不可或缺的。这个系列将以python实现,探讨一些常用的算法与数据结构。

​首先何为算法,将解决问题的方法共性进行的高度抽象,从思想的层面而言,便是道。数据结构则是在数组或链表的基础上附加特定的属性方法以获得性能的提升与所占空间的优化。为了量化程序的执行效率与存储空间的额外使用情况,引入了时间复杂度与空间复杂度。

时间复杂度是对代码执行效率的量化指标,即程序的执行次数,当程序的执行次数会由于某个变量变化时,我们以以变化函数来表示其复杂度。

​ 我们输出一个正整数n:

print(n)

​ 此程序的只需一次执行便可完成操作,我们可将其时间复杂度记为O(1)。

​ 我们再来写一个简单的for循环输出1~n(正整数):

for i in range(1,n+1):
    print(i)

​ 这个程序得运行次数取决于n值的大小不断变化,但始终为常数次,其时间复杂度我们便可记为O(n)。

​ 怎么样,是不是很简单?我们再来一题,输出n*n的矩阵:

for i in range(n):
    print("\n")
    for j in range(n):
        print("*", end=" ")

​这个程序的执行次数为ij,由于i与j相等于n,执行次数为n\n,复杂度便可记为O(n2)。

​以上的程序由于都没有额外开辟空间,所以空间复杂度皆为0。接下来我们举个简单的例子看下利用到额外空间的情况,换位:

z=x
x=y
y=z

​此时我们运用到一个额外的空间,那么空间复杂度记为O(1)。

有没有感到复杂度的计算十分简单?当然,这才刚刚开始,之后会根越来越复杂,逐渐深入。以下是常见复杂度的大小效率排序。

​ O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n)

​学习算法与数据结构是一件不是很令人愉快的事,那我们什么时候可以不用学算法与数据结构呢?
现代科技的进步让设备的性能快速提升,但至少就现在而言,性能依然是远远不够的,在实现相同结果的情况下,经过算法与数据结构加持的代码在效率与存储空间的利用上往往远强于未经优化的代码,如之后会提到的排序算法。
我想等到设备的性能强悍到可以忽略代码上的优化提升(量子计算机),存储的成本变得极其低廉吧,希望有生之年可以实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值