下面列出了数据结构与算法的八种基本排序:插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序,然后是测试的例子...
分类:
编程语言 时间:
2014-10-15 14:44:30
阅读次数:
235
C语言实现简单的归并排序算法:
归并排序算法是运用分而治之方法来解决排序问题。
分而治之方法通常用以下步骤来进行排序算法:
1.若n为1,算法终止;
2.否则,将这一元素集合分割成两个或更多个子集合,对每一个子集合分别排序,然后将排好序的子集合归并为一个集合。
我这里是将集合分割成两个子集合。
实例排序图:
...
分类:
编程语言 时间:
2014-10-15 11:54:50
阅读次数:
213
幷归排序第一次做,翻书看了一下并归的思路看了一下别人的博客。
http://poj.org/problem?id=2299
#include
#include
#define MAX 500001
int n,a[MAX], t[MAX];
long long int sum;
//幷归
void Merge(int l, int m, int r)
{
int p=0;...
分类:
编程语言 时间:
2014-10-14 23:00:09
阅读次数:
197
在上次的zipmap分析完之后,其实关于redis源代码结构体部分的内容其实已经全部结束了,因为下面还有几个和结构体相关的操作类,就页把他们归并到struct包下了。这类的文件有:t_hash.c,z_list,z_set.c,t_string.c,t_zset.c,这些文件的功能其实都差不多,就是用来实现Client和Server之间的命令处理的操作类,通过robj的形式,把dict,zipli...
分类:
其他好文 时间:
2014-10-13 11:56:29
阅读次数:
215
堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先解说下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是全然二叉树或者是近似全然二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)不论什么一个子节点的键值。2.每一个结点的左子树和右...
分类:
编程语言 时间:
2014-10-12 16:32:08
阅读次数:
187
归并排序(Merge sort)是创建在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。一个归并排序的例子:对一个随机点的链表进行排序本文地址:http://www.cnblogs.com/archimedes/p/merge-sort...
分类:
编程语言 时间:
2014-10-12 02:25:07
阅读次数:
255
各算法的时间复杂度 平均时间复杂度 插入排序 O(n^2) 冒泡排序 O(n^2) 选择排序 O(n^2) 快速排序 O(n log n) 堆排序 O(n log n) 归并排序 O(n log n) 基数排序 O(n) 希尔排序 O(n^1.25)1 快速排序(QuickSort)快速排序是一个就...
分类:
编程语言 时间:
2014-10-11 21:51:36
阅读次数:
222
合并K个已排序的数组,并分析整个算法的复杂度。
最朴素的方法TLE,借鉴归并排序的算法顺利AC,算法时间复杂度:NlogK...
分类:
其他好文 时间:
2014-10-11 19:08:45
阅读次数:
113
昨天晚上写好了归并排序的算法,后来就趁热打铁,开始写快速排序算法,代码是越写越熟练,越写越来劲。昨天晚上也就写出来了快速排序算法。但是在我测试的时候先后出现一些问题:第一个问题:1)输入 1 2 3 4 5 6 7 -1时,排序结果2 1 5 6 7 3什么什么的,但是输入8 7 6 5 4 3 2...
分类:
编程语言 时间:
2014-10-11 17:44:15
阅读次数:
134
今天听了卜东坡老师的算法课,讲的是归并算法,那个动画演示,终于让我开窍了,于是乎,赶紧今天就编了个C++的程序。我知道可能这个程序还比较粗糙,但是这是第一次实现了算法导论上的东东,心里那个激动啊,,,哎,我也终于能实现个算法了,以前总认为自己很菜,其实真的很菜,,,算了,直接上程序吧,,,#incl...
分类:
编程语言 时间:
2014-10-11 01:02:04
阅读次数:
272