算法效率通常分为时间效率与空间效率。
时间效率
时间效率是指算法在运行时所需要的时间资源。
算法在运行时间所需的时间资源主要包括:
-
算法本身的执行时间:算法执行过程中所消耗的时间,包括各个句子的执行时间、函数调用时间等。
-
输入数据的读取时间:计算在运行时需要读取输入数据,输入数据的读取时间也是计算运行时所需要的时间资源之一。
-
输入结果的写入时间:计算在运行时需要将结果写入输入,输出结果的写入时间也是计算运行时所需要的时间资源。
-
计算使用的辅助时间:有些计算需要使用一些外部的辅助时间来进行计算、判断等操作。
-
系统调用和中断的时间:算法在运行时需要占用一定的系统资源,例如系统调用、中断等所消耗的时间。
空间效率
空间效率则是指算法运行过程中所需要的空间资源。
算法在运行时所需的空间资主要包括:
-
算法本身所占用的空间:算法代码所占用的空间,包括算法使用的变量、数据结构等所占用的空间。
-
输入数据所占用的空间:计算在运行时需要读取和存储输入数据,输入数据所占用的空间也是计算运行时所需要的另一占用的空间。
-
算法产生的中间结果所占用的空间:算法在运行时可能会产生一些中间结果,这些结果也需要占用一定的空间。
-
计算使用的辅助空间:有些计算需要使用一些外部的辅助空间来存储一些状态或记录一些信息。
-
系统所占用的空间:算法在运行时需要占用一定的系统资源,例如进程、线路等所占用的空间。
算法好坏的衡量标准
算法设计的主要目标是解决给定的问题,使算法能够足够快速、准确、可靠地完成问题的求解。算法好坏的衡量标准包括:
-
正确性:计算法设计的第一目标是保证计算法的正确性,即计算法能够正确解决给定的问题。为保证计算法的正确继承性,我分析问题的性质和特征,设计出符合问题需求正确的算法。
-
时间效率:算法设计的另一个重要目标是尽管可能地减少算法执行所需要的时间,即提出高算法的时间效率。算法在大规模数据处理和实时系统中的应用。
-
空间效率:除了时间效率,算法设计的另一个重要目标是尽可能地减少算法所需要的空间资源,即提出高算法的空间策略。好坏直接影响计算法在内存受限、内存容量不足等场景下的应用。
-
可读性:算法设计的另一个重要目标是尽可能地提出高算法的可读性和可维护性。好的算法应该易于理解和修改,便于后续的修改。
-
通用性:算法设计的最终目标是尽可能地提出高算法的通用性和可扩展性,使算法足以应对不同类型的问题,并能欺鸳模型的变化。
在算法设计中,我们通常需要综合考虑算法的时间效率和空间效率,选择适合问题的最佳算法。
时间复杂度和空间复杂度是计量算法效率的一种方式。
O(n)表示算法时间复杂度为线性,即随着问题模式的增加,算法的执行时间性线增加。空间复度则是指算法所需要的内存或磁悬浮规范之间的关系,也经常使用大O号表示。
易混淆:
时间效率和空间效率可以看作是整体的运动时间性能指标,而时间复杂度和空间复杂度则是一种理论上的统计方法。算法设计中,我们通常希望计算器有比较低的时间复杂度和空间复杂度,以使用算法足够在可接收的时间和空间内解决问题。