• 随笔:想写一本数据结构的书


    早前的思考:https://doctording.blog.csdn.net/article/details/52744016

    以及最近leetcode刷题看到如下一段话

    冒泡排序,选择排序,插入排序,快速排序,堆排序,归并排序,希尔排序,桶排序,基数排序新年帮您排忧解难。
    有向图,无向图,有环图,无环图,完全图,稠密图,稀疏图,拓扑图祝您新年宏图大展。
    最长路,最短路,单源路径,所有节点对路径祝您新年路路通畅。
    二叉树,红黑树,van Emde Boas树,最小生成树祝您新年好运枝繁叶茂。
    最大流,网络流,标准输入流,标准输出流,文件输入流,文件输出流祝您新年顺顺流流。
    线性动规,区间动规,坐标动规,背包动规,树型动归为您的新年规划精彩。
    散列表,哈希表,邻接表,双向链表,循环链表帮您在新年表达喜悦。 O(1), O(log n), O(n), O(nlog n), O(n^2), O(n^3), O(2^n), O(n!)祝大家新年渐进步步高。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    所以如何讲好一个数据结构:让普通人也可以理解,当然还要有运用和实践。基本上《数据结构》这门课程大学时候是放在面向对象之前就有教授的。其实可以把一个结构当作一个“对象”来介绍,如何介绍,有什么属性,有什么操作/功能,操作的时间空间复杂度,应用的场景,生活中的举例。各大算法平台,历届考研真题,如何图解分析,如何debug分析,它的扩展等等。总之有千百种方法来认识,应用,巩固…以达到真正的理解该“对象”

    如何写书:

    首先,是可以选定一门编程语言的(当然具体到代码可以附录不同编程语言版本),毕竟“纸上得来终觉浅,绝知此事要躬行”,有了语言则可以实践

    其次,一个结构该如何讲解,我想了如下一些方面:

    1. 概念的介绍
    2. 举例生活的场景
    3. 认识基础的属性和操作
    4. 认识java中的该数据结构
    5. 如何自己手写实现该数据结构
    6. 一些简单的应用题:比如各算法平台的简单题,考研相关简单题目
    7. 一些难度较高的应用题
    8. debug图解一些题目分析
    9. 和其它数据结构的比较
    10. 可继续回归到生活如何应用,回归到程序世界什么场景用合适
    11. 一些扩展,一些此数据结构的故事
    12. 如何通俗的给外行人讲,是否可以有一些小游戏可以做做
    13. 最后总结

    另外既然是写书,当然应该要有章节,如何循序渐进,如何对比前后,串联起整个章节来也是至关重要的

    比如数组和链表介绍了,是否要扩展介绍

    1. 操作的对比
    2. 排序的对比
    3. 场景应用的对比
    4. 甚至可以继续扩展到hashMap不就有“数据+链表”的实现吗

    等等。

    总之这是个复杂的事情,需要有取舍,需要想想如何更通俗易懂,且能吸引人。

  • 相关阅读:
    libevent 梳理
    Ambire 指南:Arbitrum 奥德赛活动开始!第一周——跨链桥
    企业实战项目rsync+inotify实现实时同步
    Python中直接赋值、浅拷贝和深拷贝的区别
    怎样在CSDN赚点零花钱
    Redis主从复制部署小结
    Facebook内容的类型
    Volt Active Data介绍
    Spring Boot Actuator使用指南
    软考系统架构师知识点集锦五:系统可靠性分析与设计
  • 原文地址:https://blog.csdn.net/qq_26437925/article/details/125530655