算法有以下5个特点。
第一一个算法有零个或若干个输入。
第二输出一个算法产生一个或多个输出作为算法运算上的结果。
第3颗算法的每一个步骤都可以通过基本运算来实现。
第四确定性。
第五有穷性。
衡量一个算法的优劣,可以用以下几个基本标准。
- 正确性。
- 可读性。
- 健壮性
- 高效性
1.4.2算法的时间复杂度
算法的时间复杂度一般是由程序运行从开始到结束所需的时间。而度量算法执行时间通常有两个办法,事后统计法和事前估计法。
你注意的是同一个算法在不同的机器上执行,所花的时间不一样。
抛开与计算机软硬件相关的因素影响算法,时间效率的最主要因素是问题规模。问题规模通常是指算法的数量,一般用整数N表示。
在一般情况下可以通过考察一个程序中关键操作的执行次数来计算,算法的渐进时间复杂度。所谓的关键操作是指对算法执行时间贡献最大的操作。
1.4.3最好,最坏和平均时间复杂度
发的时间复杂度不仅与问题规模相关,如果输入数据不同数据的时间开销也会不同。例如在包含N个元素的数组中,找我给定的元素X。如果带搜索的元素X正好是第1个元素,则时间最短。如果在查找的元素,X是最后一个元素或不在数组中的算法是最坏情况。如果需要多次在数组中查找元素,并且假定一相同的概率检验每个数组元素。则是算法时间开销的平均情况。
1.4.4算法的空间复杂度。
算法的空间复杂度往往是指对应的程序从运行开始到结束所需的储存空间。
程序运行所需的储存式空间包括两部分,一固定部分二可变部分。
- 固定部分,这部分空间与时间规模无关,主要包括程序代码,常量,简单变量等所占的空间。
- 可变部分这部分空间大小与问题规模相关。
在循环中一条数据计算频率次数直接取最高项。
- 找基本操作,也就是原操作。
- 基本操作的执行次数。