主要内容:什么是数据结构,什么是算法,最大子序列和,时间复杂度,空间复杂度
解决问题的效率与什么有关?
解决问题的效率与数据组织的方式是相关的(查找和添加图书的效率与摆放图书的方式有关)
解决问题的效率与空间利用效率是有关的 (递归与非递归的比较)
与算法的巧妙程度有关 (多项式求和有两种算法可以实现 但剥皮算法比直接计算更为巧妙 则第二种更快)
数据类型的定义:数据类型在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作。
什么是算法?(算法的要素)
一个有限指令集
接受一些输入(有些情况下不需要输入)
产生输出
一定在有限步骤之后终止
每一条指令必须
有充分明确的目标,不可以有歧义
计算机能处理的范围之内
描述应不依赖于任何一种计算机语言以及具体的实现手段
空间复杂度--根据算法写成的程序在执行时占用存储单元的长度。这个长度往往与输入数据的规模有关。
空间复杂度过高的算法可能导致使用的内存超限,造成程序非正常中断。
时间复杂度--根据算法写成的程序在执行时耗费时间的长度。这个长度往往也与输入数据
的规模有关。时间复杂度过高的低效算法可能导致很长时间都没有结果。
在分析一般算法的效率时,经常关注两种复杂度。
一是 最坏情况复杂度
二是 平均复杂度
一般分析时喜欢分析最坏情况复杂度。
求最大子列和
方法:分而治之(分治法)
在线处理
“在线”的意思是指每输入一个数据就进行即时处理,在任何一个地方中止输入
算法都能正确给出当前的解。
算法复杂度比较
一个专业的程序员一旦看到n次方的时间复杂度的算法时,本能的反应就是能不能将之化为nlogn。算法效率会提高非常多
复杂度分析小窍门: