背景: 这几天玩的有点多了,代码敲少,今天补一发练习,顺便把前两天做的一个题也贴上。 正题: 1、归并排序 概念(来源百度百科):归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列; ...
分类:
编程语言 时间:
2016-04-04 13:11:22
阅读次数:
251
基本思想 归并排序是建立在归并操作上的一种有效的排序算法。 该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将一个数组分为越来越小的子列表,每个子列表单独进行排序,然后合并形成更大的有序列表。 通过归并子列表元素来合并子列表就是归并排序(Merge Sort) 代码 ...
分类:
编程语言 时间:
2016-04-03 16:04:05
阅读次数:
142
定义 所谓归并排序是指将两个或两个以上有序的数列(或有序表),合并成一个仍然有序的数列(或有序表)。 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子 ...
分类:
编程语言 时间:
2016-03-30 14:58:08
阅读次数:
202
<!--StartFragment --> 快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists)。 步骤为: 递回的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递回下去,但是这个演算法总会结束,因为在每次
分类:
编程语言 时间:
2016-03-19 06:18:28
阅读次数:
239
If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle. 思路:这题在刚開始想用双指针解,可是
分类:
编程语言 时间:
2016-03-16 09:34:27
阅读次数:
137
帮师兄做的一个问题,就是求对n个不同节点能够形成所有的二叉树的形式,不考虑旋转对称性和同构。 问题描述:给定n个节点,查看能够有多少种不同的二叉树形成,并输出出来 算法描述:使用最基本的“分治法“(Divide and Conquer)思想,任选一个节点作为根节点,将剩余节点组成的集合进行分割(Pa
分类:
其他好文 时间:
2016-02-23 20:39:05
阅读次数:
190
The implementation of binary search is not complicated, but it is a vivid illustration of the power of divide-and-conquer. Here is the code 1 int bina
分类:
其他好文 时间:
2016-02-20 07:03:12
阅读次数:
171
数集 题目大意:给定一些数的集合,要你求出集合中满足a+b+c=d的最大的d(每个数只能用一次) 这题有两种解法, 第一种就是对分,把a+b的和先求出来,然后再枚举d-c,枚举的时候输入按照降序搜索就好,一旦d满足条件就是最大的了,另外判断不重复存一下位置就好,时间复杂度0(n^2*logn) 1
分类:
其他好文 时间:
2016-02-01 09:31:50
阅读次数:
329
电话线 题目大意:一堆电话线要你接,现在有N个接口,总线已经在1端,要你想办法接到N端去,电话公司发好心免费送你几段不用拉网线,剩下的费用等于剩余最长电话线的长度,要你求出最小的费用。 这一看又是一个最小化最大值的问题(也可以看成是...
分类:
其他好文 时间:
2016-01-20 01:02:56
阅读次数:
229
矩阵 题目大意:矩阵里面的元素按i*i+100000*i+j*j-100000*j+i*j填充(i是行,j是列),求最小的M个数 这一题要用到两次二分,实在是二分法的经典,主要是每一列都是按照行来递增的,每一行我们都用二分法找到比mid小的那...
分类:
其他好文 时间:
2016-01-19 01:30:40
阅读次数:
133