algorithm
jacksoom
设计与代码
展开
-
贪心算法-活动安排问题
贪心算法-活动安排问题 具体求解思路: 首先将活动按照结束时间从小到大排序, 然后将startTime[i]大于finishTime[i-1]的活动安排进去, 由于活动结束时间是事前排好序的(具体排序方法可以看我之前的博客),所以按照此方法,安排的活动相对于来说总是先结束的,这样来说就可以尽量最大化的利用资源。 相关的代码:public class ActivityPlan { p原创 2016-03-30 15:00:09 · 2869 阅读 · 0 评论 -
动态规划:最长公共子序列
算法思想: 创建二维数组L[m][n] 将二维数组第一行,第一列值全部设置为0; 如果str1[m] == str2[n],则L[m,n] = L[m - 1, n -1] + 1; 如果str1[m] != str2[n],则L[m,n] = max{L[m,n - 1],L[m -原创 2016-03-22 09:58:13 · 567 阅读 · 0 评论 -
二分搜索法基本思想
二分搜索法基本思想将n个元素分成个数大致相同的两半,取a[n/2]与x进行比较。 如果x=a[n/2],则找到x算法终止, 如果x则在数组的右边部分继续搜索, 如果x则在数组的左边部分继续搜索public class Divide {public static int binarySeach(int []a,int x){ int left原创 2016-03-12 17:37:23 · 3115 阅读 · 1 评论 -
快速排序
快速排序算法思想:找一个基准(一个数),i从左开始i++,j从右开始j--,找到直到i对应的值大于基准,j对应的值小于基准,交换两数,终止条件是i>=j,达到终止条件的i值对应的数组位置就是基准的位置核心代码:static void quicksort(int n[], int left, int right) { int dp; if原创 2016-03-12 17:41:41 · 491 阅读 · 0 评论 -
合并排序
合并排序基本思想:递归分治法,将待排序的序列分成两部分,然后对两个部分进行排序,最终将排好序的子部分进行合并public class hebing { public static void main(String args[]){ int[] data = new int[] { 5, 3, 6, 2, 1, 9, 4, 8, 7 }; mergeSo原创 2016-03-12 18:38:07 · 419 阅读 · 0 评论 -
回溯法:最优装载问题
回溯法对解空间进行深度优先搜索,在一般情况下可用递归方法实现回溯法。 空间树理解: 假设装载的集装箱n=3,则空间树可以表示为上图,就是1表示装入该集装箱,0表示不装入该集装箱,最优装载问题就是在这些空间树里,寻找最优子结构。我想看到此处应该不难理解。集体测试代码:public class bestLoading { static int n;//集装箱数量 static i原创 2016-04-10 19:54:43 · 11282 阅读 · 0 评论 -
分支限界法:最优装载问题
分支限界法的基本思想: 1)队列式(FIFO)式分支限界法 队列式分支限界法将活节点组织成一个队列,并按照队列“先进先出”的原则,选取下一个节点为当前拓展节点 2)优先队列式分支限界法 优先队列的分支限界法将活动表组织成一个优先队列,并按照队列规定的节点优先级选取最高的下一个节点成为当前拓展节点eg:基于FIFO式分支限界法的最优装载问题 基本代码思路: 1:和回溯法的思路一样,用FIF原创 2016-04-28 19:22:40 · 10628 阅读 · 0 评论