剖析递归行为和递归行为时间复杂度的估算
一个递归行为的例子
T(N) = a*T(N/b) + O(N^d)
1) log(b,a) > d -> 复杂度为O(N^log(b,a))
2) log(b,a) = d -> 复杂度为O(N^d * logN)
3) log(b,a) < d -> 复杂度为O(N^d)

例:

归并排序

 public static void mergeSort(int[] arr) {
if (arr == null || arr.length < 2) {
return;
}
mergeSort(arr, 0, arr.length - 1);
} public static void mergeSort(int[] arr, int l, int r) {
if (l == r) {
return;
}
int mid = l + ((r - l) >> 1);
mergeSort(arr, l, mid);
mergeSort(arr, mid + 1, r);
merge(arr, l, mid, r);
} public static void merge(int[] arr, int l, int m, int r) {
int[] help = new int[r - l + 1];
int i = 0;
int p1 = l;
int p2 = m + 1;
while (p1 <= m && p2 <= r) {
help[i++] = arr[p1] < arr[p2] ? arr[p1++] : arr[p2++];
}
while (p1 <= m) {
help[i++] = arr[p1++];
}
while (p2 <= r) {
help[i++] = arr[p2++];
}
for (i = 0; i < help.length; i++) {
arr[l + i] = help[i];
}
}

T(N) = 2 * T(N/2)  + O(N);

log(b,a)  =  1==d

所以  T(N) = O(nlogn)

最新文章

  1. PyQt4入门学习笔记(四)
  2. mysql 数值函数
  3. linux原始套接字(3)-构造IP_TCP发送与接收
  4. 不用任何图片,只用简单的css写出唯美的钟表,就问你行吗?
  5. access数据库导入Oracle
  6. 【20161030la 】总结
  7. excel导入mssql数据库,支持excel2003--2010文件格式
  8. asp.net运行机制图
  9. MVC 5 + EF 6
  10. easyUI 添加排序到datagrid
  11. matlab笔记(1) 元胞结构cell2mat和num2cell
  12. caffe数据读取的双阻塞队列说明
  13. 看到一个对CAP简单的解释
  14. 【大数据】Zookeeper学习笔记
  15. Selenium得到当前页面的URL
  16. Dockerfile 构建后端tomcat应用并用shell脚本实现jenkins自动构建
  17. appium简明教程(11)——使用resource id定位(仅支持安卓4.3以上系统)
  18. PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
  19. 201709011工作日记--ART与Dalvik&amp;&amp;静态类与非静态类
  20. zabbix安装收获-WARNING: &#39;aclocal-1.14&#39; is missing on your system

热门文章

  1. Asp.net Core的Swagger接口根据模块、版本分组
  2. Servlet生命周期 、Filter生命周期、Listering(监听器)总结
  3. 【Android Studio安装部署系列】二十、Android studio如何将so文件添加到svn中
  4. Java代码登录拦截器例子
  5. tcc分布式事务框架解析
  6. python3-列表字典简单练习题
  7. Tushare模块
  8. Docker在Linux上运行NetCore系列(三)在Linux上使用Docker运行Asp.NetCore
  9. 简述在ADO中使用接口的抽象数据提供程序以及ADO.NET数据提供程序工厂模型
  10. 菜鸟入门【ASP.NET Core】1:环境安装