分治法
Devin Dever
立志写好每一篇博客,分享日常好用工具!
展开
-
学懂基础排序算法—快速排序
快速排序简介:快速排序是另一种基于分治技术的重要排序算法,不像合并排序是按照元素在数组中的位置对他们进行划分,快速排序通过元素的值对它们进行划分,划分是对数组中元素的重新排列,使得某一元素左边的元素都小于等于该元素,而右边的元素都大于等于该元素。显然,建立划分后,A【s】就已经位于在它有序数组中的最终位置,接下来,对两边的数组分别进行排序,同样的方法。下面是快速排序算法的伪代码void quicksort(int a[10],int l,int r){ if(l<r) { int原创 2020-05-27 21:07:08 · 451 阅读 · 0 评论 -
分治法,动态规划法—最大子数组问题的求解
问题描述:假定你获得了投资某公司的机会,这家公司的股票价格是不稳定的,你被准许在某一天买进该公司的股票#define min -24551215#include<stdio.h>struct tuple{ int low; int high; int maxsum;};tuple findmaxcrossingsubarray(int a[100],int low,int mid,int high){ int leftsum=min; int maxleft; int r原创 2020-05-26 22:02:42 · 783 阅读 · 0 评论 -
最基础排序算法—归并排序
归并排序算法完全遵循分治模式。直观上操作如下;分解: 分解待排序的n个元素的序列成各具n/2个元素的两个子序列。解决: 使用归并排序递归的排序两个子序列合并: 合并两个已排序的子序列来产生已排序的答案当待排序的序列长度为1,递归开始回升,不需要做处理,长度为1的序列都是排好序的。归并排序算法的关键点在于“合并”步骤中两个已排序序列的合并,通过调用一个辅助的函数来合并。merge(A,p,q,r)A是一个数组,p,q,r是数组的下标。该过程假设子数组A(p,,,q)和A(q+1,,,,r原创 2020-05-26 17:57:00 · 280 阅读 · 0 评论