Skip to content

【202-毕业总结】 #1509

Description

@zrhong

对于不是科班出生的我们,基础是比较欠缺的,其中以数据结构和算法为重点,所以我果断报了超哥的算法训练营,旅程如下:
一.为什么学习算法?
记得初学算法时不明白为什么费力分析程序的执行步骤后,还要用公式表达出来并求极值。
一遍遍的学习渐渐有了领悟:算法研究是用来做大事的!之所以分析效率还求极限,是因为
各种算法和数据结构都要研究其在海量输入数据或最坏最不利的情况下的效率表现。如果
只是我们每天乏味工作中那三两个数的排序,几十个数值对的哈希,那其实怎样实现都无所
谓了。所以个人觉得,学习算法能提高分析代码、洞察效率的能力,并且它也是我们继续深入学
习操作系统、网络编程、数据库的基础。如操作系统管理内存的红黑树,保存进程优先级的
最大堆,程序运行时函数调用的栈结构,数据库中的B树索引,大量数据的外部多路归并排序
和编译器将表达式解析为树然后遍历等。
二、学习算法的技能
1、认识时间复杂度
算法的好坏是通过算法的时间复杂度来评估的,去计算时间复杂度的时候要去掉常数项,去掉低位项,保留最高项。评价算法的流程好坏,就是在这个算法中常数操作执行了多少次
2、认识了五毒神掌、庖丁解牛、自顶向下、及时反馈;
3、从基础的数据结构以及对应的算法学习->到其实现->解决方案->反馈
4、初学算法时,搞不清楚为什么有那么多的数据结构,那么多的排序算法。散列表不是已经很好
了吗,为什么又搞出一堆二叉树?快排不是已经很完美了吗,为什么还有堆排、冒泡、合并排?
一遍遍地学习,学会比较各种数据结构和算法后,才能看清这些的设计背后的本质。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions