其实网上有很多分治法求最大字段和的文章,但是说实在的,show me the code对于算法初学者来说is cheap 应该改为show me the example ,只有这样结合概念才能比较好的理解算法,而不是看着伪码不知所云的敲着代码,就以为自己掌握了 首先最大子序列只会出现下面三种情况: ...
分类:
其他好文 时间:
2018-06-27 18:52:04
阅读次数:
147
期末了,通过写博客的方式复习一下算法,把自己知道的全部写出来分治:分而治之,把一个复杂的问题分解成很多规模较小的子问题,然后解决这些子问题,把解决的子问题合并起来,大问题就解决了但是我们应该在什么时候用分治呢?这个问题也困扰了我很久,做题的时候就不知道用什么算法能用分治法的基本特征:1.问题缩小到一... ...
分类:
其他好文 时间:
2018-06-22 22:38:28
阅读次数:
215
听说过动态规划(DP)的同学应该都知道有背包问题的存在。 首先我们来了解一下动态规划 基本思想: 动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中, 可能会有很多可行解。没一个解都对应于一个值,我们希望找到具有最优值的解。胎动规划算法与分治法类似,其基本思想也是将待求解问题分解为若干个子 ...
分类:
其他好文 时间:
2018-06-22 21:49:02
阅读次数:
187
归并排序 归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。 将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。 归并排 ...
分类:
编程语言 时间:
2018-06-19 22:38:54
阅读次数:
124
快速排序的基本实现 快速排序算法是一种基于交换的高效的排序算法,它采用了分治法的思想: 1、从数列中取出一个数作为基准数(枢轴,pivot)。 2、将数组进行划分(partition),将比基准数大的元素都移至枢轴右边,将小于等于基准数的元素都移至枢轴左边。 3、再对左右的子区间重复第二步的划分操作 ...
分类:
编程语言 时间:
2018-06-19 17:12:11
阅读次数:
189
基本思想 动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中, 可能会有很多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动规划算法与分治法类似,其基本思想也是将待求解问题分解为若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适用于动态规划算 ...
分类:
其他好文 时间:
2018-06-18 13:28:13
阅读次数:
187
抛出问题: 求一数组如 l = [0, 1, 2, 3, -4, 5, -6],求该数组的最大连续子数组的和 如结果为[0,1,2,3,-4,5] 的和为7 问题分析: 这个问题很简单,直接暴力法,上代码。 分治法: 关键是暴力法的时间复杂度太高,所以就在原有的基础上做了进一步的提升--分治法。 所 ...
分类:
编程语言 时间:
2018-06-10 11:43:41
阅读次数:
227
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 进阶: 如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。 方案 ...
分类:
其他好文 时间:
2018-06-03 12:38:57
阅读次数:
216
一、简介 快速排序(Quicksort)由C. A. R. Hoare在1962年提出,是对冒泡排序的一种改进。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod), 快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用。 二、 ...
分类:
编程语言 时间:
2018-06-02 23:59:49
阅读次数:
389
归并排序( Merge sort) 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。 1 ...
分类:
编程语言 时间:
2018-06-01 22:20:18
阅读次数:
237