什么是凸包? 我的理解就是,图形任意两点的连线都没有在图形外部。 问题:给定点集,怎么求出凸包的边界点呢??? 第一步:给这些点按照X的从大到小进行排序,如果X相同的按照Y再排序。 第二步:把X最小的和最大的连起来,他们必为凸包的边界点。 第三步:把平面区域分为两个部分,分别在上面和下面去找面积最大 ...
分类:
其他好文 时间:
2020-03-17 23:46:59
阅读次数:
68
分治策略 1)将问题分解为规模较小的子问题,子问题与原问题同质 2)迭代或者递归解决每个子问题 3)将子问题的解综合得到原问题解 例子:二分查找Binary Search 1 BinarySearch(T,l,r,x) 2 //输入数组T,下标从l到r,查找数x 3 //输出j,若x在T中输出下标, ...
分类:
编程语言 时间:
2020-03-16 13:17:50
阅读次数:
61
0.引入 1.插入排序 每次都认为前面的已排好序,将当前的数与其前面的数进行比较,如果前面的数大于它,则交换位置,不断交换直到前面的数比它小 2.折半查找 在有序数组里,跳跃式递归查找。 问题描述:求一个n个数列表的第k个最小元素。(无序情况,有折半思想和快排思想) 利用减治法的思想,找到一个基准数 ...
分类:
编程语言 时间:
2020-03-14 10:52:07
阅读次数:
53
1. 简单介绍 1.1 设计思想 分而治之 就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题 ( 这些子问题互相独立且与原问题形式相同 )…… 直到最后子问题可以简单的直接求解, 原问题的解 即 子问题的解的合并 分治思路: 类似于数学归纳法,找到解决本问题的求解方 ...
分类:
编程语言 时间:
2020-03-13 22:14:53
阅读次数:
93
凡是高效的排序算法无疑都是采用了分治的策略。我们先来看一下什么是分治的思想: 分治法,字面意思是“分而治之”,就是把一个复杂的问题分成多个相同或相似的子问题,再把子问题分成更小的子问题直到最后子问题可以简单地直接求解,原问题的解即子问题的解的合并。即,分治法的思想是将原问题拆解成相同或者相似的子问题 ...
分类:
编程语言 时间:
2020-03-13 20:59:38
阅读次数:
59
百度百科: 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排 ...
分类:
编程语言 时间:
2020-03-13 01:33:43
阅读次数:
62
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。把长度为n的输入序列分成两个长度为n/2 ...
分类:
编程语言 时间:
2020-03-11 23:21:37
阅读次数:
105
分治法求最大子序列和: def calc(a, l, r): m = (l + r) >> 1 if l == r: return a[l] leftsum = calc(a, l, m) rightsum = calc(a, m + 1, r) thissum = 0 rightbordersum ...
分类:
其他好文 时间:
2020-03-03 12:38:11
阅读次数:
69
快速排序其实是使用分治法的思想,即在原数组中找一个数p,然后将原数组中比数p大的数放到此数的右边,比数p小的数放到次数的左边。 口诀:1.找中轴 2.左边快排 3.右边快排 主体代码如下: void quick_sort(int * data,int left,int right){ if(left ...
分类:
编程语言 时间:
2020-02-26 01:29:39
阅读次数:
89
题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。 并将P对1000000007取模的结果输出,即输出P%1000000007。 输入描述: 题目保证输入的数组中没有的相同的数字。 数据范围: 对于%50的数据,s ...
分类:
编程语言 时间:
2020-02-24 14:49:35
阅读次数:
71