Go实现分布式外部排序 项目路径: https://github.com/Draymonders/go_external_sort 默认读入文件: 默认输出文件: 默认是划分为16个block进行单独的排序,然后两两归并排序 ...
分类:
编程语言 时间:
2019-06-08 15:10:59
阅读次数:
99
第八章数据结构小结数据结构这一章主要讲的是关于排序的各种方法,由于不同应用对于时间复杂度与空间复杂度的要求不同,用的排序方法也不同,主要的排序方法有插入排序,交换排序,选择排序与归并排序,其中插入排序分为直接插入排序,间接插入排序与希尔排序,交换排序分为冒泡排序与快速排序,选择排序分为简单选择排序与 ...
分类:
其他好文 时间:
2019-06-08 01:03:07
阅读次数:
118
本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj,Ai原来在位置前,排序后Ai还是要在Aj位置前。 其 ...
分类:
编程语言 时间:
2019-06-07 13:02:46
阅读次数:
93
1、若你需要排序的是基本数据类型,则选择快速排序。若你需要排序的是引用数据类型,则选择归并排序。(基于稳定性考虑) 因为基本数据类型之间无差异,不需要考虑排序算法稳定性,而归并排序则可以实现算法的稳定性。 2、当你需要排序的样本数量小于60,直接选择插入排序,虽然插入排序的时间复杂度为O(N²),我 ...
分类:
编程语言 时间:
2019-05-29 22:06:22
阅读次数:
174
#include #include int n; /* * 合并 */ void Merge(int *source, int *target, int i, int m, int n) { int j, k; for (j = m + 1, k = i; i <= m && j <= n; k++... ...
分类:
编程语言 时间:
2019-05-24 20:58:37
阅读次数:
107
算法的简单的概念算法的概念:O()大O表示法O(): 程序大概运行的次数 1,时间复杂度:时间复杂度是用来估计算法运行时间的一个式子(单位)。常见的时间复杂度(按效率排序)O(1)<O(logn)<O(n)<O(nlogn)<O(n**2)<O(n**2logn)<O(n**3)前四种较重要。 2, ...
分类:
编程语言 时间:
2019-05-23 00:05:36
阅读次数:
105
基本思想归并排序利用分治法思想,先将一个序列分成一个个子序列,然后对子序列进行排序,再把有序子序列合并为整体有序序列。 两路归并排序算法思路:①把 n 个记录看成 n 个长度为1的有序子表;②进行两两归并使记录关键字有序,得到 n/2 个长度为 2 的有序子表; ③重复第②步直到所有记录归并成一个长 ...
分类:
编程语言 时间:
2019-05-22 19:28:58
阅读次数:
161
一 : 归并排序 将两个的有序数列合并成一个有序数列,我们称之为"归并"。归并排序(Merge Sort)就是利用归并思想对数列进行排序。根据具体的实现,归并排序包括"从上往下"和"从下往上"2种方式。 1. 从下往上的归并排序:将待排序的数列分成若干个长度为1的子数列,然后将这些数列两两合并;得到 ...
分类:
编程语言 时间:
2019-05-22 09:52:21
阅读次数:
156
1 二分查找: 快速排序:参考 https://www.cnblogs.com/coderising/p/5708801.html 堆排序:https://www.cnblogs.com/chengxiao/p/6129630.html 归并排序:https://www.cnblogs.com/ch ...
分类:
编程语言 时间:
2019-05-18 15:48:14
阅读次数:
140