算法图解:第一章:算法入门

举报
是Dream呀 发表于 2024/11/29 17:03:46 2024/11/29
【摘要】 @TOC 🌲1.1引言算法是一组完成任务的指令,任何代码片段都可以看做是一个算法! 1.1.1性能方面本专栏介绍的每种算法都很可能有使用你喜欢的语言编写实现,你将学习到不同算法的优缺点,进而选择更好地算法! 1.1.2问题解决及技巧利用这些广泛的算法,你将会学习到更具体的AI算法,数据库算法。 🌲1.2 二分查找二分查找是一种算法,其输入必须是一个有序的元素列表。如果要查找的元素包含在列...

@TOC

🌲1.1引言

算法是一组完成任务的指令,任何代码片段都可以看做是一个算法!

1.1.1性能方面

本专栏介绍的每种算法都很可能有使用你喜欢的语言编写实现,你将学习到不同算法的优缺点,进而选择更好地算法!

1.1.2问题解决及技巧

利用这些广泛的算法,你将会学习到更具体的AI算法,数据库算法。

🌲1.2 二分查找

二分查找是一种算法,其输入必须是一个有序的元素列表。如果要查找的元素包含在列表中,二分查找返回其位置;否则返回null。

1.2.1简单查找

依次查找n次,又叫做傻找

1.2.2更佳的查找方式

每次从中间开始查找,就是我们所说的二分查找,这样我们的时间复杂度就是logn,而不是简单查找中的n
在这里插入图片描述

def binary_search(list,item):
    low=0
    high=len(list)-1
    while low<=high:
        mid=(low+high)//2
        guess=list[mid]
        if guess==item:
            return mid
        if guess>item:
            high=mid-1
        else:
            low=mid+1
    return None
print(binary_search([1,3,5,7],1))

1.2.3运行时间

如果有100个元素,简单查找需要找100次;而如果有40个亿的元素,其更是要查找40亿次,先不说时间问题,估计你的电脑跑出来这个程序也离退休不远了~
换而言之,这种时间被称为线性时间
二分查找则不同,100个元素只需要7次;40亿个元素,只需要惊人的32次!
这样的运行时间被称为对数时间
在这里插入图片描述

🌲1.3大O表示法

大O表示法是一种特殊的表示法,指出了算法有多快。

1.3.1算法的运行时间以不同的速度增加

例如:为检查长度为的的列表,简单查找需要查找n次,运行时间为O(n),二分查找的运行时间为O(log n)。这指出了算法需要执行的操作数。之所以被称为大O表示法,是因为操作数前面有个O。这听起来像笑话,但事实确实如此。

1.3.2 理解不同的大O运算时间

大O表示法指出了最糟糕的情况下的运行时间。

1.3.3一些常见的大O运行时间

  1. O(log n):对数时间,这样的算法包括二分查找
  2. O(n):线性时间,这样的算法包括简单查找
  3. O(n*log n):这样的算法包括快速排序
  4. O(n**2):这样的算法包括选择排序
  5. O(n!):这样的算法包括旅行商问题的解决方案

在这里插入图片描述

注意:
1.算法的速度并非指时间,而是操作数的增速
2.谈论算法的速度时,我们说的是随着输入的增加,其运行时间将以什么样的速度增加
3.算法的运行时间用大O表示法表示
4.O(logn)比O(n)快,当需要搜索的元素越多时,前者比后者快得多。

1.3.4旅行商

一位商人要去往五个城市,规划出最优路线。这需要我们先找出所有路线再作比对,也就是5!,这个方法很费时间,但目前还没有找到更快的算法。在这里插入图片描述

🌲1.4小结

1.二分查找的速度比简单查找快得多
2.O(log n)比O(n)快,需要搜索的元素越多,前者比后者就更快得多!
3.算法运行时间不是以秒为单位
4.算法运行时间是从其增速的角度度量的
5.算法运行时间用大O表示法表示

最后的福利

最后一点小福利带给大家:如果想快速上手python的小伙伴们,这个详细整理PPT可以迅速帮助大家打牢python基础,需要的小伙伴们可以下载一下Python入门基础教程全套+小白速成+学不会来找我!

好啦,这就是今天要给大家分享的全部内容了
如果你喜欢的话,就不要吝惜你的一键三连了~在这里插入图片描述

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。