本篇开始将开始更新算法方面的博客,其实应该是数据结构更多一些,我不知道大家是如何学习算法和数据结构的,就我目前的学习情况,简单的和大家说一下感受。本人研一时学校开设了算法这门课程,当时上这门课时也很用心的学习了,但是那时候的学习更多的是理解各个算法的原理,不懂数据结构方面的知识,更不会自己写算法,有时候遇到问题能想到可以使用某一个算法进行解决,但是就是自己写不出来,原因是没学数据结构,为什么这样说呢?

我觉得算法和数据结构的学习不应该分开学,应该在一起学习,但是放在一起学习,知识量太大了,所以拆了学习,拆开学习建议先学习算法,不需要你动手写程序,简单的使用伪代码就可以了,关键是要深入理解算法思想,以及不同算法的区别这才是核心。如果有算法的基础,在学习数据结构你会发现很简单(当然需要勤加练习)。之前为何写不出来代码呢?一是没有很好的编程基础(没有实战过),二是没有数据结构的知识。数据结构太重要,这门课就是教你如何写出高质量的代码的,建议大家一定要好好学习一下数据结构,下面我就简单的介绍一下我学习数据结构的过程,希望能给你解惑,如果你是急于求成或者急于找工作,建议直接刷LeetCode吧,那样效果会更好,我说的方法都是基本功,是通过学习数据结构解决任何一个问题(当然不是NP难问题),解决LeetCode的就更不在话下了,这就是以不变应万变的深层含义,我是这样学习的。

本人打算学习数据结构和算法实现使用语言是c++,当时对c++也不算很懂,以前只深入学习过c语言,基础好点,因此直接看了一本书《C++语言程序设计(第4版)》.(郑莉,董渊),这本书写的挺好的,重点都讲到了,但是感觉讲的还是不深,于是就买了一本c++经典巨著《C++ Primer》第五版,这本书超级好,讲的很深很全面,正好是我需要的,因此花了十多天把这本书看了前三部分,看完以后给我的感觉是c++太牛叉了,果然很强大。阅读期间没遇到很难懂的地方,不懂的稍微百度就懂了,我是只看哈,没时间练习,我需要整体掌握这门语言的特性,这样才能很好的理解他和使用它,至于练习我放在了学习数据结构和算法,因为我就使用c++学习数据结构,肯定会有大量的练习,这样既可以学习数据结构和算法的实现又可以练习c++,这样更高效,当时我是这样计划的,结果也确实是这样的。后面就开始学习数据结构了。

讲到学习数据结构,让我对数据结构很重视的原因就是清华大学邓俊辉老师的书数据结构(C++语言版)第三版_邓俊辉-清华大学,也有配套的视频教程,这本书和其他的数据结构讲解不同,他不是因为讲数据结构而讲数据结构,他是通过解刨c++库源码进行讲解,很强的,我们知道,c++有一个模板是Vector和list等模板,我们经常使用,但是你们知道内部原理嘛?邓老师的这本书就是从vector向量的内部接口函数开始讲解的,讲的超级好,里面涉及了排序,查找、删除、等等算法。关键是如果哪里看不懂可以看视频,这就很牛叉了,所以学习就没什么难度了,只要我们努力多加练习,反复理解和敲代码,掌握他们没什么难点,基本你把Vector理解了,后面的都不难了,很简单。我是怎么学习的呢?我是直接看书,我看书感觉最有味道,看不懂了,在好好理解,实在看不懂了在查查视频讲解,这样做的好处是理解的更深,如果基础一般的同学建议直接看视频,多学习几遍,我一边看书,一遍实现代码,使用c++,每遇到新的c++问题我就会查c++那本书,这样确实掌握一门语言很快,大家可以试试。目前我把数据结构前五章看完了,也练习完了,感觉挺不错了,掌握了大量的编程技巧(邓老师的书的代码技巧性太多了,值得好好学习和揣摩,一定要想想邓老师为什么这样写代码,优点在哪里?)。最重要的是解决问题的思路,一般邓老师会从根源讲解即先提出问题,然后给出问题的解决方案,最后分析方案的优劣,本人觉得,他的解决问题的思路和方法很重要,尤其分析问题时,把问题转换成数据结构方面的代码,虽然需要一点编程技巧,但是我们需要好好体会他问什么会这样做,有什么好处?例如实现一个算法的for循环条件或者while循环的条件,条件为什么这样写(判断条件肯定不是拍脑袋来的,肯定和你的算法有关,尤其特殊情况的判断更值得我们推敲和思考),还有就是与或非,利用编程语言的编译性质,为什么某个条件需要写在与的左边,写在右边如何?这里大家都要思考,不用简单的过一遍,如果简单的过一遍你是学不到什么东西的,你需要深入挖掘更深层的知识,多练习,多思考,这样不停的训练,时间长了,你的思维就会发生变化,该变化就是数据结构方面即把问题转换成代码的能力,大家别以为我在吹嘘,我是真感觉到了,遇到问题你能很快的想到代码如何写,如何设计等等,这才是我们需要提高的,您说呢?再过一段时间,结束后,我就会开始刷LeetCode,我觉的到时候刷题应该会很快,目前就这样,今天就到这里了。

数据结构+算法+c++学习(写在前面)相关推荐

  1. 数据结构算法,学习笔记

    算法学习资源 93k 算法小抄.leetcode https://github.com/labuladong/fucking-algorithm 算法可视化https://visualgo.net/z ...

  2. 立志10天学会C++基础应用—day02 代码清晰易懂 涉及数据结构算法的知识 写完了~我也麻了

      哈喽,很高兴又见面啦,一起加油一起学习,欢迎您的关注!https://blog.csdn.net/hanhanwanghaha学习路上有您的关注是我的荣幸,一起进步是我的动力,明天也一起加油啊! ...

  3. 数据结构算法入门--一文了解什么是复杂度

    图片来自 Pixabay,作者:TeroVesalainen 2019 年第 74 篇文章,总第 98 篇文章 本文大约 3000 字,阅读大约需要 10 分钟 最近会开始更新一个数据结构算法的学习系 ...

  4. 大数据技术之_16_Scala学习_13_Scala语言的数据结构和算法_Scala学习之旅收官之作

    大数据技术之_16_Scala学习_13 第十九章 Scala语言的数据结构和算法 19.1 数据结构(算法)的介绍 19.2 看几个实际编程中遇到的问题 19.2.1 一个五子棋程序 19.2.2 ...

  5. 数据结构与算法——从零开始学习(一)基础概念篇

    系列文章 第一章:基础知识 第二章:线性表 第三章:栈和队列 第四章:字符串和数组 第五章:树和二叉树 第六章:图 第七章:排序算法 前言 数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合 ...

  6. 数据结构与算法教程,让数据结构不再难懂,让算法不再难写

    据结构与算法不分家 数据结构包括数据对象集以及它们在计算机中的组织方式,即它们的逻辑结构和物理存储结构,一般我们可以认为数据结构指的是一组数据的存储结构. 算法就是操作数据的方法,即如何操作数据效率更 ...

  7. 数据结构与算法基础-学习-19-哈夫曼解码

    一.个人理解 哈夫曼树和哈夫曼编码相关概念.代码.实现思路分享,请看之前的文章链接<数据结构与算法基础-学习-17-二叉树之哈夫曼树>.<数据结构与算法基础-学习-18-哈夫曼编码& ...

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

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

  9. 数据结构与算法基础学习(一)

    http://www.cnblogs.com/yangwujun/archive/2012/12/29/2839038.html 基本概念和术语 1.数据(Data) 数据是外部世界信息的载体,它能够 ...

最新文章

  1. Java15-day06【Set、HashSet、LinkedHashSet、TreeSet、Comparable、Comparator、泛型类、可变参数的使用】
  2. 操作系统难点解析之进程和线程
  3. 中如何移动物体在画面中的位置_如何在弱光环境中拍摄运动物体
  4. cocos2d_x_05_Box2D物理引擎
  5. 华为NP课程笔记22-防火墙
  6. 3D MAX插件大全介绍
  7. java软件开发是什么_java常用的开发软件是什么
  8. AppFuse 2.1的安装运行步骤------利用Maven构建appfuse
  9. “Tara”或将于2018年5、6月与我们见面
  10. 深度残差网络+自适应参数化ReLU激活函数(调参记录2)
  11. 特征锦囊:特征无量纲化的常见操作方法
  12. Matlab/Simulink 自动代码生成 基于模型设计学习教程(2)---- 闪烁灯实验
  13. 递归和循环两种方法完成树的镜像转换
  14. typora笔记使用base64编码图片
  15. S2SH水费管理系统-JAVA【数据库设计、源码、开题报告】
  16. Unity与3DMax
  17. 【视频学习】大神教你玩转Excel,收获高效人生
  18. UILabel attributedText
  19. 基于图嵌入的降维算法——边界Fisher分析(MFA)
  20. eclipse中各图标含义

热门文章

  1. 用代码初始化APP的window
  2. Linux socket
  3. 《互联网运营智慧》随书视频
  4. 大数据分析平台具备怎样的功能
  5. [ Typescript 手册] JavaScript `Array` 在 Typescript 中的接口
  6. AcWing 788. 逆序对的数量
  7. raw转bmp程序c语言,求指导,如何用c语言实现读取*.raw格式图像
  8. python中oxf_python的strip()函数不工作
  9. android recyclerview添加头部,Android RecyclerView添加Header头部
  10. python︱微服务Sanic制作一个简易本地restful API