算法
考点一:·算法的基本概念
【一】算法的特性:拥有足够的情报(输入输出)、有穷性、确定性、可行性。
(1)输入输出:零个或多个输入,一个或多个输出。
(2)有穷性:算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成。
(3)确定性:算法的每一个步骤都具有明确的含义,不会出现二义性。
(4)可行性:算法的每一步都是可行的,能够通过执行有限次数完
【二】算法的基本要素
(1)据对象的运算和操作:计算机可以执行的基本操作是以指令的形式描述的。一个计算机系统能执行的所有指令的集合,成为该计算机系统的指令系统。一个计算机的基本运算和操作有如下四类:
1:算术运算:加减乘除等运算
2:逻辑运算:或、且、非等运算
3:关系运算:大于、小于、等于、不等于等运算
4:数据传输:输入、输出、赋值等运
(2)算法的控制结构
一个算法的功能结构不仅取决于所选用的操作,而且还与各操作之间的执行顺序有关。(描述算法的工具通常有传统流程图、N-S结构化流程图、算法描述语言等)。
考点二:算法复杂度的概念和意义**
(1)时间复杂度:评估执行程序所需的时间。可以估算出程序对处理器的使用程度。
(2)空间复杂度:评估执行程序所需的存储空间。可以估算出程序对计算机内存的使用程度。
算法时间复杂度:
同一个算法用不同的语言实现,或者用不同的编译程序进行编译,或者在不同计算机上运行,效率均不同。这表明使用绝对的时间单位衡量算法效率是不合适的。撇开这些与计算机硬件、软件有关的因素。可以认为一个特定算法“运行工作量”的大小只依赖于问题的规模(通常用n表示),它是问题规模的函数。即算法的工作量=f(n)。
最坏情况下,冒泡排序、快速排序、简单插入排序、简单选择排序需要的比较次数为O(n2);希尔排序需要的比较次数为O(n1.5);堆排序需要的比较
次数为O(nlog2n);顺序查找需要的比较次数为O(n)次;二分法查找需要的比较次数为O(log2n)。
(1)<O(logn)<O(n1/2)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)
算法的空间复杂度:
算法的空间