❶ 学数据结构和算法之前要先学什么
学习算法和数据结构就是把你的程序运行速度变得更快,内存需求变得更小,代码长度变得更短。正式进入数据结构和算法前需要了解下C++内存的那些事。
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。
栈,在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限;
堆,就是那些由new分配的内存块,它们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收;
自由存储区,就是那些由malloc等分配的内存块,它和堆是十分相似的,不过它是用free来结束自己的生命的;
全局/静态存储区,全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区;
常量存储区,这是一块比较特殊的存储区,它们里面存放的是常量,不允许修改。
以上内容摘自《C++内存管理技术内幕》,学习数据结构和算法前可以多多看一下。
❷ 学习算法需要什么样的数学基础
具体看做哪方面的算法,普通码农有高数基础就行了,大数据需要概率论和数理统计方面的知识,机器学习需要线性代数、数值分析、最优化、概率论、随机过程等知识,密码学涉及到线性代数、抽象代数、代数几何等,网上这些课程都有。
❸ 学习算法导论需要什么数学基础或者其他的基础吗
算法导论的数学基础要求不是很高 确切的说老外的书 对于数学的要求都不是很高 但 人家要的是研究的态度 线代 高数 还有一点点的离散数学基础就可以了
❹ 如何掌握算法,要从C语言的基础开始慢慢学习吗!
掌握算法不需要学习C语言,但是算法是为了自动化工作,这样算法才有意义。计算机语言是算法的载体,将算法转换成计算机代码。你也可以学习其他计算机语言,比如python之类的,哪种语言最简单最易学,最能够表述就用哪个。学matlab也行
❺ 学习算法分析与设计需要那些基础(是否需要学习离散数学和线性代数)
算法分析与设计,目前国内本科生和硕士生的教材好像都是从国外翻译过来的。听起来挺复杂的样子,如果简单地掌握和运用还是不难的,大部分内容在数据结构中都涉及过,实际编程中也运用比较多,难的在于算法的理论研究,如21世纪的七大难题之一的NP问题就是算法问题(涉及逻辑可满足性问题)。
简单地讲需要的基础有以下几类:
1、基础类(相对一般本科生而言):(1)把数据结构学好了算法就不难的,而数据结构其实就是图论的运用,如果是非数学专业的学生可以看离散数学中的图论部分。(2)算法分析设计时间和空间复杂度的计算,常用的还是毛泽东的战略思想——以空间换取时间。所以要学会简单的数量级运算,涉及部分代数式和数论的知识。只要简单掌握运算就可以了,不必深究。
2、提高型(研究生水平):图论、组合数学、数理逻辑学要专门学习,可以采用数学系本科生的图论、组合数学、数理逻辑学等专业课的教材。其中组合数学中的组合设计在一定程度上和算法设计有异曲同工之处。
3、研究型(专业研究):这主要看自己的研究方向了,如果研究能力强的话可以在很短时间内可以把需要遇到的数学知识搞懂,没有现成的固定模式。其中如研究NP问题,需要非常精深的逻辑学知识和数论基础。但不管哪个研究方向,数学的缜密思维和推理能力都是必备的,这不是一朝一夕可以练就的,需要长时间的锻炼。
以上仅个人一点点体会,仅供参考。