问题:给定平面上N个点的坐标,找出距离最近的两个点。/*找出两边的最小值,与中间点对可能形成的最小值找出最小值。除非是只剩下2个,三个点。否则在分治之后,每层都需要在递归回来之后归并处理。每层返回的最终ans都是该层的最小值,之后再返回给上一层*//*归并的时候首先把X方向上小于ans的点收集起来,...
分类:
其他好文 时间:
2014-10-09 14:49:24
阅读次数:
261
碎碎念:
记得当初第一年的时候、接触算法、有那么两个视频、跳舞的、讲的是冒泡排序跟选择排序、当时看了好多遍终于懂了、这次多了一些算法、学起来也还好吧、咱是有基础的人、找到了以前的视频、有的就发了、没找到的就没法、其实算法并不难、绕绕就明白了、先别看代码- -
思维导图
插入排序
从头到尾巴、从第二个开始、向左进行插入、这里说的插入是指作比较、直到比较出比自...
分类:
其他好文 时间:
2014-10-09 03:01:27
阅读次数:
191
归并排序可以有两种思路----top-down 和 bottom-up
top-down:
递归实现,将数组分成两半,分别处理;再合并。
伪代码如下:
split ( A[], l, r)
{
if ( r - l < 2) return;
m = (r + l) / 2;
split ( A, l, m); //split A[l…m-1]
split ( A, m, r); /...
分类:
其他好文 时间:
2014-10-09 02:51:37
阅读次数:
222
#includevoid Merge(int R[],int R1[],int s,int m,int t);void MergeSort(int R[],int R1[],int s,int t);int main(void){ int n; scanf("%d",&n); int R[n],R1...
分类:
其他好文 时间:
2014-10-09 02:23:47
阅读次数:
136
dp[i][j]=min(dp[i][j],dp[i][k],dp[k+1][j]+sum[i][j]);表示i-j的最小合并代价。 1 #include 2 #include 3 #include 4 5 using namespac...
分类:
其他好文 时间:
2014-10-08 15:25:25
阅读次数:
207
归并排序 与插入排序不同的是二个有序数组彼此的插入,而插入排序是一个数向有序里插入。
思想是吧一个数组分成若干个最小的有序数组,然后把这些小的有序数组,进行合并。
下面是代码:
public class MergeSort {
public int[] sort(int[] nums, int low, int high){
int mid = (low + high) /...
分类:
其他好文 时间:
2014-10-08 10:47:25
阅读次数:
199
堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先解说下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是全然二叉树或者是近似全然二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)不论什么一个子节点的键值。2.每一个结点的左子树和右...
分类:
其他好文 时间:
2014-10-07 21:41:04
阅读次数:
184
一直以来做题目用的都是sort函数,突然要自己写归并算法确实挺头痛的。尤其是一开始连归并排序是什么都搞不懂,最后看了半天书终于明白二分归并,那么三分的也就呼之欲出了 1 #include 2 #include 3 #include 4 using namespace std; 5 ...
分类:
其他好文 时间:
2014-10-06 21:58:40
阅读次数:
310
关于海量数据的问题,网上大多都是查询前N条,或出现次数比较多的前N条等。基于此,有:1)、使用Trie树或哈希表进行统计次数;2)、使用快排、堆或归并进行排序。3)、当然,还可以先进行哈希取模,将数据量变小,之后重复1)与2)即可,最后归并。大致就这些方法,当然说得很容易,做起来有点难度,如Trie...
分类:
其他好文 时间:
2014-10-06 17:16:50
阅读次数:
127
Java算法学习-----------------归并排序算法...
分类:
编程语言 时间:
2014-10-05 12:44:28
阅读次数:
185