数据结构与算法学习笔记 教你字节跳动算法面试破冰

数据结构是程序的骨架,而算法则是程序的灵魂。

《算法 + 数据结构 = 程序》 是 Pascal 语言之父 Niklaus Emil Wirth写过的一本非常著名的书。而作为书名的这句话也成为了计算机科学的经典名句。可见,对于程序设计来说,算法和数据结构的关系密不可分。

在学习之前,首先我们要弄清楚什么是算法?什么是数据结构?为什么要学习算法和数据结构?

简单来说,算法(Algorithm) 就是解决问题的方法或者过程。如果我们把问题看成是函数,那么算法就是将输入转换为输出的过程。数据结构(Data Structure) 是数据的计算机表示和相应的一组操作。程序(Program) 则是算法和数据结构的具体实现。

如果我们把「程序设计」比作是做菜的话,那么「数据结构」就是食材和调料,「算法」则是不同的烹饪方式,或者可以看作是菜谱。不同的食材和调料,不同的烹饪方式,有着不同的排列组合。同样的东西,由不同的人做出来,味道自然也是千差万别。

至于为什么要学习算法和数据结构?

还是拿做菜举例子。我们做菜,讲究的是「色香味」俱全。程序设计也是如此,对于待解决的问题,我们追求的是:选择更加合适的「数据结构」,使用花费时间更少、占用空间更小的「算法」。

我们学习算法和数据结构,是为了学会在编程中从时间复杂度、空间复杂度方面考虑解决方案,训练自己的逻辑思维,从而写出高质量的代码,以此提升自己的编程技能,获取更高的工作回报。

当然就像是做菜,掌握了食材和调料,学会了烹饪方式,并不意味着你就会做出一盘很好吃的炒菜。同样你掌握了算法和数据结构并不意味着你就会写程序。这需要不断的琢磨和思考,并持续学习,才能成为一名优秀的 厨师(程序员)。

我花了一个星期将八大基础排序和链表/二叉树/栈/队列制作成一份精美的PDF

下面简单介绍一下八大基础排序和基础的数据结构,每种排序的思想和基础的讲解和源码在PDF里边有。

数据结构与算法学习笔记 教你字节跳动算法面试破冰_第1张图片

数据结构与算法学习笔记 教你字节跳动算法面试破冰_第2张图片

数据结构与算法学习笔记

一、冒泡排序

数据结构与算法学习笔记 教你字节跳动算法面试破冰_第3张图片

二、选择排序

数据结构与算法学习笔记 教你字节跳动算法面试破冰_第4张图片

三、插入排序

数据结构与算法学习笔记 教你字节跳动算法面试破冰_第5张图片

四、快速排序

数据结构与算法学习笔记 教你字节跳动算法面试破冰_第6张图片

五、归并排序

数据结构与算法学习笔记 教你字节跳动算法面试破冰_第7张图片

六、希尔排序

数据结构与算法学习笔记 教你字节跳动算法面试破冰_第8张图片

七、堆排序

数据结构与算法学习笔记 教你字节跳动算法面试破冰_第9张图片

八、基数排序(桶排序)

数据结构与算法学习笔记 教你字节跳动算法面试破冰_第10张图片

九、递归

数据结构与算法学习笔记 教你字节跳动算法面试破冰_第11张图片

十、链表

数据结构与算法学习笔记 教你字节跳动算法面试破冰_第12张图片

十一、栈

数据结构与算法学习笔记 教你字节跳动算法面试破冰_第13张图片

十二、队列

数据结构[队列]就是这么简单

数据结构与算法学习笔记 教你字节跳动算法面试破冰_第14张图片

十三、二叉树

  • 0.二叉树就是这么简单
  • 1.动态创建二叉树
  • 2.查询二又查找树相关

    数据结构与算法学习笔记 教你字节跳动算法面试破冰_第15张图片

你可能感兴趣的:(算法,数据结构,java,后端,学习)