白话数据结构之基本概念篇(1)_入门概述

白话数据结构系列文章目录

基本概念篇
1. 入门概述
2. 复杂度
3. 数组&链表
4. 栈&堆
5. 排序算法
6. 查找算法

编程思想篇

实际问题篇
1. 约瑟夫环


一、前言

数据结构这门课也算是命途多舛,从最早的大学上课完全不听,到找工作时突击准备了下排序和数组链表,到去年十一月花钱买了个课,最后到现在看完了整本的大话数据结构。可算是暂告一段落了,说不上完完全全学会,但也算是勉强入门了吧。
再加上工作两年来收集或总结的一些编程思想,搞个博客写写就当对着整段时间的一个总结和提炼吧。


二、前置条件

C语言基础


三、本文参考资料

大话数据结构
数据结构与算法之美
百度


四、正文部分

4.1 数据结构与算法概念

数据结构是指一组数据的存储结构
算法就是操作数据的方法
数据结构和算法是相辅相成的,数据结构是为算法服务的,而算法要作用在特定的数据结构之上
数据结构是静态的,它只是组织数据的一种方式。如果不在它的基础上操作、构建算法,孤立存在的数据结构就是没用的。

 

4.2 学习目的

不扯那些用于应试或者高大上的说法,收集了一些比较落地的观点

  • 直接好处是能够有写出性能更优的代码
  • 基础知识就像是一座大楼的地基,它决定了我们的技术高度。而要想快速做出点事情,前提条件一定是基础能力过硬,“内功”要到位。
  • 掌握数据结构和算法,不管对于阅读框架源码,还是理解其背后的设计思想,都是非常有用的。
  • 算法,是一种解决问题的思路和方法,有机会应用到生活和事业的其他方面。
  • 长期来看,大脑思考能力是个人最重要的核心竞争力,而算法是为数不多的能够有效训练大脑思考能力的途径之一
  • 学习数据结构和算法的过程,是非常好的思维训练的过程,所以,千万不要被动地记忆,要多辩证地思考,多问为什么。如果你一直这么坚持做,你会发现,等你学完之后,写代码的时候就会不由自主地考虑到很多性能方面的事情,时间复杂度、空间复杂度非常高的垃圾代码出现的次数就会越来越少。你的编程内功就真正得到了修炼。

 

4.3 学习重点

数据结构和算法解决的是如何更省、更快地存储和处理数据的问题,因此,我们就需要一个考量效率和资源消耗的方法,这就是复杂度分析方法。
在学习数据结构和算法的过程中,要学习它的「来历」、「自身的特点」、「适合解决的问题」以及「实际的应用场景」。

  • 数据结构和算法学习的精髓-复杂度分析
  • 最常用的、最基础的数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树
  • 最常用的算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法

 

4.4 学习方法

  1. “边学边练”这一招非常有用。每周花 1~2 个小时的时间,集中把这周的三节内容涉及的数据结构和算法,全都自己写出来,用代码实现一遍。
  2. 可以“适度”刷题,但一定不要浪费太多时间在刷题上。学习的目的还是掌握,然后应用。
  3. 我们在枯燥的学习过程中,也可以给自己设立一个切实可行的目标
  4. 学习知识的过程是反复迭代、不断沉淀的过程。
     

4.5 总知识点

在这里插入图片描述


五、总结

数据结构和算法解决的是如何更省、更快地存储和处理数据的问题,因此,我们就需要一个考量效率和资源消耗的方法,这就是复杂度分析方法。
在学习数据结构和算法的过程中,要学习它的「来历」、「自身的特点」、「适合解决的问题」以及「实际的应用场景」。

学习知识的过程是反复迭代、不断沉淀的过程。

写代码的时候就会不由自主地考虑到很多性能方面的事情,时间复杂度、空间复杂度非常高的垃圾代码出现的次数就会越来越少。你的编程内功就真正得到了修炼。
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值