跳到文章开头
  1. Algorithms/

复杂度

·1 分钟
代码随想录
 ·  页面点击量:

master公式:

在编程中,递归是非常常见的一种算法,由于代码简洁而应用广泛,但递归相比顺序执行或循环程序,时间复杂度难以计算,而master公式就是用于计算递归程序的时间复杂度。

T(N) = a*T(N/b) + O(N^d);

​ 下面对参数进行解释:

b:子过程的样本量 a:子过程的计算次数 O(N^d):子结果合并的时间复杂度 满足如上公式的程序都可以根据master公式计算时间复杂度:

log(b,a) > d :时间复杂度为O(N^log(b,a)) log(b,a) = d :时间复杂度为O(N^d * logN) log(b,a) < d :时间复杂度为O(N^d)

在学习归并排序之前,我们先学习一个简单的算法:当我们求一个值的中值时,可以使用:

int mid = L + ((R - L) » 1); 注意使用位运算更好,之后采用这种方法来计算平均数

​ 这样可以避免内存泄露。

归并排序:

思想很简单,写一个临时数组,比较需要传入的对应元素,小的先放好,大的后放。

相关文章

二分法
·1 分钟
代码随想录
哈希篇
·2 分钟
代码随想录
有序数组的平方
·1 分钟
代码随想录