1.实践题目 PTA算法 7-1 二分查找 2.问题描述 3.算法描述 4.算法时间及空间复杂度分析 (1)时间复杂度: 每经过一次比较,数组a的大小就变为原来的一半,则有T(n) = O(1) + T(n/2) = O(logn) (2)空间复杂度: 因为定义的变量a[]所分配的空间大小不随n和x ...
分类:
编程语言 时间:
2019-09-22 21:46:39
阅读次数:
86
分治法的思想就是把一个难以解决的大问题分解成很多个小规模的问题--分而治之,说实话我不明白和dp的区别 ...
分类:
编程语言 时间:
2019-09-13 14:01:40
阅读次数:
97
Leetcode之分治法专题-654. 最大二叉树(Maximum Binary Tree) 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下: 通过给定的数组构建最大二叉树,并且输出这个树的根节点。 示例 : 提示: 分别找l到r区间里的最大值,然后再构造其左右的子树就ok了。 ...
分类:
其他好文 时间:
2019-09-13 11:03:27
阅读次数:
112
思路: 分治法。记最大子序和为maxResult,函数为int getMaxSub( *, * ) {}。 向量A= [a1, a2, a3, ...., ai, ai+1, a+2, ......, aj-1, aj], maxResult = max( maxresult(a1, ......, ...
分类:
其他好文 时间:
2019-09-09 15:12:29
阅读次数:
108
Leetcode之动态规划(DP)专题-53. 最大子序和(Maximum Subarray) 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 进阶: 如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。 定义:dp ...
分类:
其他好文 时间:
2019-09-06 13:21:35
阅读次数:
79
定义 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 原理 第一 ...
分类:
编程语言 时间:
2019-09-05 23:01:14
阅读次数:
135
1.简述 快速排序是一种排序执行效率很高的排序算法,它利用分治法来对待排序序列进行分治排序,它的思想主要是通过一趟排序将待排记录分隔成独立的两部分,其中的一部分比关键字小,后面一部分比关键字大,然后再对这前后的两部分分别采用这种方式进行排序,通过递归的运算最终达到整个序列有序,下面我们简单进行阐述。 ...
分类:
编程语言 时间:
2019-09-02 19:14:46
阅读次数:
90
数据结构—分块 分块是一种非常好理解、非常好写的数据结构。与其说分块是数据结构,倒不如说它是一种“算法”,甚至是一种“思想”。我个人认为,分块的思想和分治法很像。它们的基本实现方式都可以概括成:将一个大问题拆成若干小问题,最后求解完小问题之后将答案汇总得出大问题的答案。 分块的基本实现是这样的:对于 ...
分类:
其他好文 时间:
2019-08-29 23:31:08
阅读次数:
120
归并排序 package algorithm.sort; / @Auther: AaronPi @Date: 2019 5 6 21:32 归并排序 思想:(分治法 用递归来实现)把数组从中间分成两部分,分别排序,再组合在一起 思路很巧妙,需要尤其注意边界条件、判断剩余元素等事项 / public ...
分类:
编程语言 时间:
2019-08-25 14:13:25
阅读次数:
94
二叉树递归相关题目的时间复杂度基本上都是O(n) = 一共有n个点 + 每个点的时间复杂度(1) 而二叉树分治法最坏的时间复杂度为O(n^2) 时间复杂度:T(n) = 2T(n/2) + O(1) = O(n) Merge Sort, Quick Sort: T(n) = 2T(n/2) + O( ...
分类:
其他好文 时间:
2019-08-20 18:29:33
阅读次数:
90