查看原文
其他

一张图理解数据结构与算法的关系

顶级算法 2022-07-01
关注顶级算法修炼内功
顶级算法后台回复 1024 有特别礼包

责编:顶级算法 | 来源:土豆洋芋山药蛋

链接:blog.csdn.net/qq_33414271/article/details/80366014

上一篇精彩:图解抖音推荐算法

大家好,我是顶级算法。

一句话:相互之间存在关系的数据元素的集合就是数据结构,算法是解决特定问题的有限求解步骤


一张图:



学习数据结构与算法有什么用呢?拿一个厨师的厨艺来比较的话,真正的大厨一般不是那种能做各种花样的菜式的人,而是能把普通的菜炒出不平凡的效果的人。就像“酸辣土豆丝”,不同的人炒出来的效果就不一样,从一道简单的菜就可以看出厨师的功底,而数据结构与算法就是程序员的功底。另外,搜索公众号技术社区后台回复“算法”,获取一份惊喜礼包。


回到图上,由图中可以看出,数据结构操组的对象是数据元素,即他们有相同的属性(属性也取决于观察者的角度),它们之间的存在的关系会产生不同的结构,数据元素之间的关系+操作构成了数据类型,对已有的数据类型进行抽象就构成了抽象数据类型(ADT),就是封装了值和操作的模型。


在看算法这一块,就是根据输入,设计可行的计算方法并用有限的可执行步骤描述出来(程序),最终得到确定的输出。(从中也可以看出算法的5大特性:输入,输出,有穷性,确定性,可行性)。


评估一个算法的好坏常用时间复杂度,时间复杂度的计算方法也可以分为3步,具体步骤图上已经给出,举个例子来说(不考虑输入输出的时间以及每个步骤之间的时间差异):如果程序需要执行3n² + 10n + 20的次,那么第一步将化简为3n² + 10n + 1,第二步将化简为3n²,第三步化简为n²,最终时间复杂度为O(n²)。


线性表,堆栈,串,树,图是常见的用抽象数据类型定义的结构,查找和排序是常见的算法。


排序序列:
1、程序员必知必会的排序一:冒泡排序2、程序员必知必会的排序二:快速排序3、程序员必知必会的排序三:直接插入排序4、程序员必知必会的排序四:希尔排序5、程序员必知必会的排序五:拓扑排序6、程序员必知必会的排序六:选择排序7、程序员必知必会的排序七:归并排序8、程序员必知必会的排序八:基数排序9、程序员必知必会的排序九:堆排序

觉得不错?欢迎转发分享给更多人

最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 10T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!

👆扫码回复【面试题】即可获取👆



公众号后台回复 算法 或者 算法心得 有惊喜礼包!顶级算法交流群

 「顶级算法」建立了读者算法交流群,大家可以添加小编微信进行加群。欢迎有想法、乐于分享的朋友们一起交流学习。

扫描添加好友邀你进算法群,加我时注明姓名+公司+职位】


版权申明:内容来源网络,版权归原作者所有。如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。

往日分享:

如何有效地做算法题?字节跳动面试经验总结,已顺利拿到offer!
一位大佬用了算法刷题宝典,进阿里了!
算法分析的正确姿势面试时写不出排序算法?看这篇就够了
红黑树详细分析,看了都说好这些书,真tm肝……提高千倍效率的35个编码小技巧,老司机带你飞!
二叉树、红黑树以及Golang实现红黑树机器学习必知必会10大算法!程序员必知必会10大基础算法
每个程序员都应该收藏的算法复杂度速查表

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存