数据结构和算法的重要性想必各位在江湖上早就有所耳闻。它对我们最直接的影响就是面试,一般来说,程序员一面都会涉及数据结构和算法知识,尤其是当前找工作比较难的情况下,各个公司会更加重视对候选人基本能力的考察。另外的影响是工作,以我为例,最开始在一家小公司做大数据的时候,由于数据量较大而计算资源不足,所以需要想尽各种办法优化软件的性能。最难解决的问题就是空间搜索效率,当时用了kd-tree这种数据结构,以及最短路径算法(SPFA)。当然大部分情况下像这种常见的算法调用现有的包即可,但有些时候需要结合业务做一些改进,这时候有扎实的基本功就显得尤为重要了。

正好最近关注到学习数据结构和算法的两个工具,特别好用。下面我就分别介绍下这两个工具,各位可以收藏一下,说不定以后能用到。

第一个工具是数据结构和算法可视化工具——Data Structure Visualizations。该工具由旧金山大学开发,地址:
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

它的作用是将数据结构和算法用可视化的方式展现出来,方便我们理解其中的原理。类似的工具还挺多的,我对比了四五个之后,觉得这个是最好的。内容丰富、容易操作、访问速度快且容易理解。虽然网站是英文的,但英文并不多,且都是些容易理解的术语。下面我就带大家体验简单体验一下该工具如何使用。首先,来看看该工具包含多少内容。

这只截取了部分,可以看到其中包含了各种树(二叉搜索树、红黑树、B树)、各种排序(归并排序、快速排序、堆排序)以及各种图算法(最短路径、最小生成树算法)。基本上涵盖了我们平时常见的数据结构和算法。

下面再来看看该工具是如何操作的


上图左边是我用工具建立的一颗红黑树,右边是一颗B+树。可以看到页面上没有过多的冗余信息,只是包含了插入、删除、打印相关的按钮以及选项,学习成本特别低。

其实从这里我们也能大概看出红黑树和B+树的一些区别,上图B+树中的元素比红黑树多,然而树的高度却比红黑树低。这一特点就决定了在数据库场景中,不可能用红黑树做索引,那会导致树高度非常高。这种可视化的方式体感很强。

上面介绍了可视化工具,下面再介绍一个数据结构和算法的代码库,地址:

https://github.com/TheAlgorithms/Python
https://github.com/TheAlgorithms/Javascript
https://github.com/TheAlgorithms/Java
https://github.com/TheAlgorithms/C

先来看看都包含什么内容

这里只是截取了部分内容,跟可视化工具一样,常见的数据结构和算法基本都包含。

最后,用二分查找的小例子,来将这两个工具结合起来。二分查找算法很简单,它是我出去找工作面试中出现频率最高的一道题。虽然简单但也别小看它,我做面试官的时候,仍然遇到有好多人写不出来。Python版算法库代码地址:

https://github.com/TheAlgorithms/Python/blob/master/searches/binary_search.py
我自己也实现了一下,代码如下:

二分查找过程如下:

这里既包含了查找过程,又包含了每一步查找对应的执行代码,非常方便学习。

良心推荐两个学习数据结构和算法的利器,让学习像呼吸一样轻松相关推荐

  1. (收藏)强烈推荐几个学习数据结构和算法的网站和可视化工具

    一.学算法必去的一个网站 首先有一个网站那是每一个学习数据结构与算法都必须去的网站,说出来你就知道了,那就是大名鼎鼎的LeetCode. 链接直达:https://leetcode.com/ 中文版长 ...

  2. 数据结构稀疏矩阵的加法十字链表_学习数据结构和算法的框架思维

    ----------- 通知:如果本站对你学习算法有帮助,请收藏网址,并推荐给你的朋友.由于 labuladong 的算法套路太火,很多人直接拿我的 GitHub 文章去开付费专栏,价格还不便宜.我这 ...

  3. 数据结构与算法深入学习_我最喜欢的免费课程,用于深入学习数据结构和算法...

    数据结构与算法深入学习 by javinpaul 由javinpaul Data structures and algorithms are some of the most essential to ...

  4. 我是如何学习数据结构与算法的?

    数据结构与算法的地位对于一个程序员来说不言而喻.今天这篇文章不是来劝你们学习数据结构与算法的,也不是来和你们说数据结构与算法有多重要. 主要是最近几天后台有读者问我是如何学习数据结构与算法的,有没有什 ...

  5. labuladong的算法小抄_学习数据结构和算法的框架思维

    ----------- 通知:如果本站对你学习算法有帮助,请收藏网址,并推荐给你的朋友.由于 labuladong 的算法套路太火,很多人直接拿我的 GitHub 文章去开付费专栏,价格还不便宜.我这 ...

  6. 如何正确学习数据结构、算法这门课?

    你是否曾跟我一样,因为看不懂数据结构和算法,而一度怀疑是自己太笨?实际上,很多人在第一次接触这门课时,都会有这种感觉,觉得数据结构和算法很抽象,晦涩难懂,宛如天书.正是这个原因,让很多初学者对这门课望 ...

  7. 【超全汇总】学习数据结构与算法,计算机基础知识,看这篇就够了【ZT帅地】2020-3-7

    https://blog.csdn.net/m0_37907797/article/details/104029002 由于文章有点多,并且发的文章也不是一个系列一个系列发的,不过我的文章大部分都是围 ...

  8. 在Object-C中学习数据结构与算法之排序算法

    笔者在学习数据结构与算法时,尝试着将排序算法以动画的形式呈现出来更加方便理解记忆,本文配合Demo 在Object-C中学习数据结构与算法之排序算法阅读更佳. 目录 选择排序 冒泡排序 插入排序 快速 ...

  9. 如何抓住重点,系统高效地学习数据结构与算法?

    你是否曾跟我一样,因为看不懂数据结构和算法,而一度怀疑是自己太笨?实际上,很多人在第一次接触这门课时,都会有这种感觉,觉得数据结构和算法很抽象,晦涩难懂,宛如天书.正是这个原因,让很多初学者对这门课望 ...

最新文章

  1. .Net QQ互联教程
  2. 染色[SDOI2011]
  3. L1-039. 古风排版
  4. vue 页面使用百度地图
  5. MVC是什么?(转载)
  6. 在Java web中使用json
  7. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 5丨员工奖金【难度简单】
  8. 局部变量和成员变量的区别
  9. linux系统批量装机,PXE+Kickstart实现无人值守批量安装Linux
  10. c# 使用timer定时器操作,上次定时到了以后,下次还未执行完怎么处理
  11. ROS笔记(7) 话题通信
  12. Java的反射机制(Reflection)
  13. opencv 训练人脸对比_Page21-树莓派4B人脸检测与识别(opencv)
  14. 3D-06-打飞碟(物理运动)
  15. Android定制实现上网限制
  16. Linux中缺32位运行库steam,尝试安装Steam错误:您缺少以下32位库,并且Steam可能无法运行:...
  17. ESP分区和MSR分区下怎么重做GHOST系统
  18. windows xp系统账号密码忘记解决办法
  19. 刘邦韩信java_刘邦为什么叫韩信雏儿 刘邦杀韩信后悔了吗
  20. 工作记录:IIS 报 Bad Request(Invalid Hostname)

热门文章

  1. 360遭下架,苹果商店封杀360手机应用
  2. Python序列——字典
  3. 金蝶KIS商贸版即时库存表开发实现增加'综合数量'列
  4. 数据安全不容忽视,华为云网站安全为企业保驾护航
  5. C++在线一本通1006~1023题答案(其中1011暂时缺少)
  6. Java图像处理之正片叠底
  7. 背景图片适应屏幕大小的一些方法
  8. 【AHK】QDir_x64窗口管理器使用体验/QDir_x64与AHK键冲突
  9. Flutter的依赖报错-Could not resolve all files for configuration xxxx
  10. mac释放“其他”内存空间的解决方法