归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个有序的子序列,再把有序的子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路...
分类:
其他好文 时间:
2014-08-18 12:32:04
阅读次数:
230
石子合并(一)
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述 有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最小值。
输入有多组测试数据,输入到文件结束。
每组测试数据第一行有一个整...
分类:
其他好文 时间:
2014-08-17 17:09:13
阅读次数:
233
归并排序 归并排序是另一类不同的排序方法,所谓归并,就是把两个或者两个以上的有序表合并成一个新的有序表的过程。基本思想 将一个含有n个序列的有序表看成是n个长度为1的有序表,然后两两归并,得到[n/2]个长度为2的有序表,然后再两两归并,直到得到一个长度为n的有序表为止。example 初始值 【4...
分类:
其他好文 时间:
2014-08-17 16:58:42
阅读次数:
225
都是两种效率高而且常用的排序方法,今天来总结下。 先说快排: 首先,快速排序的时间复杂度为nlogn,其思想实质为分治法。而这分治法的基本思想为以下三点: 1.先从数列中取出一个基准数。 2.在分治的过程中,比这个基准数小的数全部放到这个基准数的左边,反之则放到右边。 3.然后再对由第...
分类:
其他好文 时间:
2014-08-17 02:22:30
阅读次数:
186
链表排序,要求使用 O(nlgn) 时间,常量空间。使用归并的思路/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int ...
分类:
其他好文 时间:
2014-08-16 15:02:00
阅读次数:
162
定义一个基类,用基类的指针分别指向不同的子类。。。
#include
#include
#include
#include
using namespace std;
class ListNode {
public:
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {
}
};
...
分类:
编程语言 时间:
2014-08-16 11:15:50
阅读次数:
187
【问题】
找出反序的个数
给定一整型数组,若数组中某个下标值大的元素值小于某个下标值比它小的元素值,称这是一个反序。 即:数组a[]; 对于i a[j],则称这是一个反序。 给定一个数组,要求写一个函数,计算出这个数组里所有反序的个数。
【代码】
#include
#include
#include
int sumNum = 0;
void merge(int *a...
分类:
其他好文 时间:
2014-08-15 22:34:49
阅读次数:
231
本文简要描述线性回归算法在Spark MLLib中的具体实现,涉及线性回归算法本身及线性回归并行处理的理论基础,然后对代码实现部分进行走读。
分类:
其他好文 时间:
2014-08-15 21:05:49
阅读次数:
562
java的排序算法,直接排序,插入排序,交换排序,归并排序...
分类:
编程语言 时间:
2014-08-15 16:06:09
阅读次数:
348
归并排序是建立在归并操作上的一种有效的排序算法。该算法是採用分治法(Divide and Conquer)的一个很典型的应用。首先考虑下怎样将将二个有序数列合并。这个很easy,仅仅要从比較二个数列的第一个数,谁小就先取谁,取了后就在相应数列中删除这个数。然后再进行比較,假设有数列为空,那直接将还有...
分类:
其他好文 时间:
2014-08-15 14:13:49
阅读次数:
146