复杂度主要有空间复杂度和时间复杂度两种。
早期由于受限于硬盘条件,存储不足,而程序较小,计算不太复杂,所以算法设计的目标是尽量减小空间复杂度来适应很小的存储空间;
随着硬件设备的发展和计算机应用面的扩大和深入,存储空间越来越大,而程序所要处理的问题越来越复杂,因而目前算法设计的目标是减小时间复杂度。
空间复杂度主要指正常运行一个程序所要提供的最小存储空间,计算比较方便;时间复杂度简单来说是指程序中嵌套层次最深,执行频度最大的语句的预期执行次数;但实际上研究的时间复杂度往往用一个执行次数的上确界函数来表示;同时忽略低次项和常数项,因为当问题规模扩大后,这些项对程序运行的时间影响较最高次项而言是可以忽略不计的。