一般而言,只比较额外空间,来比较算法空间优越性,也就是基础数据所需空间无法避免。
比如排序算法中的快速排序,显然会需要一个栈来记录递归返回地址,所以额外空间是O(logn)。
堆排序虽然是在原数组中建堆,但是每做一次sift_down操作要同时做一次交换,交换操作一般需要一个临时变量,所以也说额外空间是O(1)
还有像2路归并排序,需要一个额外的数组,所以额外空间是O(n)
再比如DFS通常需要一个o(n)的二进制数组来进行回溯。
当然,还有一些外排序算法,通过交换区和虚拟内存技术,可以减少内存空间。
比如排序算法中的快速排序,显然会需要一个栈来记录递归返回地址,所以额外空间是O(logn)。
堆排序虽然是在原数组中建堆,但是每做一次sift_down操作要同时做一次交换,交换操作一般需要一个临时变量,所以也说额外空间是O(1)
还有像2路归并排序,需要一个额外的数组,所以额外空间是O(n)
再比如DFS通常需要一个o(n)的二进制数组来进行回溯。
当然,还有一些外排序算法,通过交换区和虚拟内存技术,可以减少内存空间。