zoukankan      html  css  js  c++  java
  • 我的算法与数据结构阶段性总结

    • 为什么一定要学习算法和数据结构?
      1. 写出高性能并且优雅的代码
      2. 不会算法和数据结构,你对你的代码是好还是坏,为什么好为什么坏都不了解的,也就是你不知道你的代码的时间复杂度和空间复杂度,那怎么会好呢?
      3. 经常使用的MySQL 的索引使用的是B+树,那么什么是B+树呢?使用的Redis的集合里面的实现是怎么实现的呢? 使用的是跳表实现的,那什么是跳表呢? 这些都是数据结构的数据存储知识

    所以,你如果不掌握和熟悉算法和数据结构的话,你对你的代码的好与坏是不知道的,同时对项目数据量变大以及复杂度增加时,没有预估,没有预估怎么会做到防范于未然,做好项目呢。还有经常使用的中间件,为什么他们那么高效,都是由于他们在存储结构上面经过trade-off 以后选择了适合的数据结构,才能实现这么高效的运行。

    • 为什么看了相关书籍,也知道大概的具体实现,还是没有掌握?
      1. 看了两边《大话数据结构》还是不不会实现基本的数据结构,以及使用基本的数据结构应用到自己的算法当中
      2. 看书是一回事,看完以后是否真正理解了,转化成自己的知识了么?我目前的情况是并没有,只是了解,没有转化为自己的认识和理解,自己可以使用笔和纸,将过程画出来,再去实现,因为只有你了解了过程,才有可能实现,这就是我们为什么我们有时候需要写伪代码
      3. 练习,画图,动手,思考,动手,反馈,动手。多动手,多练习,编程是一个实践性非常强的学科,只看书是学不会写代码的。

    • 那到底应该怎么学习呢?
      1. 了解每种数据结构的优点和缺点,以及产生背景以及我们可以用这个数据结构做什么?
      2. 通过画图的方式将算法的演变过程或者数据结构的存储方式画出来,推演一番
      3. 动手将画出的流程和存储方式进行实现

    曾经我也是那个学这个有啥用呢?我把功能实现好了不就行了,后来发现自己错了。

  • 相关阅读:
    HDU 4460 Friend Chains 第37届ACM/ICPC杭州赛区题目 (bfs求最短路,求两两之间最短路的最大值)
    HDU 4445 Crazy Tank (简单物理题,枚举)
    HDU 4433 locker 第37届ACM/ICPC 天津赛区现场赛C题(DP)
    JQuery 3级级联,3级联动,3级连动
    C++异常处理
    C++ Template
    学会用core dump调试程序错误(转)
    C++命名规则
    vim实用配置(转)
    GDB多进程调试(转)
  • 原文地址:https://www.cnblogs.com/zhangpengfei5945/p/12855449.html
Copyright © 2011-2022 走看看