master公式 ------ 求递归情况下的时间复杂度
2024-08-27 12:21:12
剖析递归行为和递归行为时间复杂度的估算
一个递归行为的例子
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)
最新文章
- PyQt4入门学习笔记(四)
- mysql 数值函数
- linux原始套接字(3)-构造IP_TCP发送与接收
- 不用任何图片,只用简单的css写出唯美的钟表,就问你行吗?
- access数据库导入Oracle
- 【20161030la 】总结
- excel导入mssql数据库,支持excel2003--2010文件格式
- asp.net运行机制图
- MVC 5 + EF 6
- easyUI 添加排序到datagrid
- matlab笔记(1) 元胞结构cell2mat和num2cell
- caffe数据读取的双阻塞队列说明
- 看到一个对CAP简单的解释
- 【大数据】Zookeeper学习笔记
- Selenium得到当前页面的URL
- Dockerfile 构建后端tomcat应用并用shell脚本实现jenkins自动构建
- appium简明教程(11)——使用resource id定位(仅支持安卓4.3以上系统)
- PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
- 201709011工作日记--ART与Dalvik&;&;静态类与非静态类
- zabbix安装收获-WARNING: &#39;aclocal-1.14&#39; is missing on your system
热门文章
- Asp.net Core的Swagger接口根据模块、版本分组
- Servlet生命周期 、Filter生命周期、Listering(监听器)总结
- 【Android Studio安装部署系列】二十、Android studio如何将so文件添加到svn中
- Java代码登录拦截器例子
- tcc分布式事务框架解析
- python3-列表字典简单练习题
- Tushare模块
- Docker在Linux上运行NetCore系列(三)在Linux上使用Docker运行Asp.NetCore
- 简述在ADO中使用接口的抽象数据提供程序以及ADO.NET数据提供程序工厂模型
- 菜鸟入门【ASP.NET Core】1:环境安装