近日,笔者对算法进行了一些总结(参考了很多大牛的博客)
众所周知,在开发的过程中,大家约遇到很多的逻辑处理问题,从而写一些算法来提高程序的运行效率。,那么评价一个算法的优劣是从那几个方面来进行的呢?下面,笔者从以下几个方面来阐述:
1、时间复杂度:
所谓的时间复杂度,也就是执行一个算法所需要的时间,一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做
公式:T(n)=Ο(f(n))
2、空间复杂度:
指的是执行一个算法,在计算机中所需要的内存空间的大小。计算方式和时间复杂度类似。
以上两点,在程序运行中,值越小越好(做测试时,我们可以打印一个算法执行所需要的时间)
3、稳定性:
列举,如存在一个算法,对集合中的数进行排序,有且存在(a=b),在排序之前(a在b之前),排序之后a仍然在b之前
4、不稳定性:
与算法的稳定性相反,排序之后,改变了a与b的位置。
5、内排序:
所有的排序操作,是在内存中进行。
6、外排序:
由于数据量比较大,因此把数据存放在磁盘当中,通过磁盘和数据传输才能进行。