9种基本算法_分治
来源:互联网 发布:淘宝做什么产品 编辑:程序博客网 时间:2024/05/22 04:34
分治思想:把一个大问题分解为n个子问题,这些子问题与原问题性质相同,只要求出子问题就可以求出原问题。往往
采用二分法
分治步骤:1、分解
2、求解
3、合并
分治问题特征:1、当问题小到一定程度就可以容易的解决
2、问题可以分解为若干个较小的相同问题
3、分解出的子问题可以合并为问题的解
4、该问题分解出的子问题是相互独立的
5、分治往往采用了递归,往往采用了2个递归才叫分治
实例:归并排序
void merge(int array[],int low,int mid,int high){ int nLeft = mid - low + 1; int nRight = high - mid; int left[nLeft] ; int right[nRight]; //左数组赋值 for (int i = 0; i < nLeft; i++) { left[i] = array[low + i]; } //右数组赋值 for (int i = 0; i < nRight; i++) { right[i] = array[mid + 1 + i]; } int index = low,i = 0,j = 0; for(;i < nLeft && j < nRight;){ if(left[i] <= right[j]){ array[index++] = left[i++]; }else{ array[index++] = right[j++]; } } //剩余元素赋值 for(; i < nLeft; i++) array[index++] = left[i]; for(; j < nRight; j++) array[index++] = right[j];}void mergeSort(int array[],int low,int high){ if (low < high) { int mid = (low + high) / 2; mergeSort(array, low, mid); mergeSort(array, mid + 1, high); merge(array, low, mid, high); }}
0 0
- 9种基本算法_分治
- 基本算法-分治算法
- 一、算法_分治算法
- 9种基本算法_枚举法
- 9种基本算法_递推
- 9种基本算法_递归
- 9种基本算法_贪心
- 9种基本算法_回溯
- 算法学习_分治法
- 基本算法之分治法
- 算法学习_分治算法、动态规划
- 分治算法_汉诺塔问题_Java实现
- 算法_分治法进行排序
- 算法导论_第四章_分治策略
- 算法_分治策略_找到最大值与最小值
- 分治算法基本思想和典型案例
- 分治算法基本思想和典型例题
- 基本算法——第七单元 分治
- storyboard的使用
- golang 中bufio包的用法
- 关于新浪微博SDK在代理服务网络环境中遇到的问题 weibo4j.model.MySSLSocketFactory.createSocket
- Eclipse中的Android内容辅助
- 避免 ListView 的 控件重用机制 导致视图/数据混乱
- 9种基本算法_分治
- C语言之关系运算符、逻辑运算符、三目运算符
- c# 获取当前活动窗口句柄,获取窗口大小及位置
- 排序算法总结
- Spring3 MVC核心类DispatcherServlet与接口的介绍
- java集合体系
- HDU1064 Financial Management 【water】
- 使用 SCons 轻松建造程序
- golang中io/ioutil包用法