- 博客(5)
- 资源 (3)
- 收藏
- 关注
原创 外排序
外排序和内排序是两种截然不同的排序算法,因为外排序是对文件进行排序,通常文件很大我们不能一次性读入内存。因此我们需要使用外排序。外排序常用的算法是多路归并排序。多路归并排序是指把文件分成n个已经排好序的文件,然后对每个子文件同时读入,选出当前指针最小的值输出,然后该指针后移,直到处理完所有子文件。 现在我们模拟外排序,内存使用最多1M,对1 ~ 10000000个数进行外排序。 首先是数据生成部
2017-05-25 21:03:24 483
原创 排序算法
排序的算法有泡排序、选择排序、堆排序、插入排序、快排、归并排序和基数排序。 泡排序的基本思想是:将序列中的第一个元素与第二个元素进行比较,若前者大于后者则两者交换位置,否则不交换;依次类推直到n - 1个元素与第n个元素比较为止。经过如此一趟排序,使得n个元素中值最大的元素被安置在序列的第n个位置上。然后再对n - 1个元素进行相同的处理。 泡排序的代码如下:void bubbleSort(ve
2017-05-23 16:23:53 273
原创 图的邻接表和邻接矩阵表示以及相关算法
图是由定点的非空有限集合V与变得集合E组成的,其形式化定义为:G = (V, E),若图中的每一条边是没有方向的则称G为无向图,否则称为有向图。图的表示方法有邻接矩阵和邻接表表示法。图的常见算法有深度优先搜索,广度优先搜索,Prim算法,dijsktra算法,floyd算法,拓扑排序和关键路径。我用C++进行了实现,代码如下,具体的算法请上网搜索。 图的邻接矩阵表示:#include <iostr
2017-05-18 16:44:33 1692
原创 红黑树
红黑树是一种数据结构,C++的set, map,和linux的内存管理都是用红黑树实现的。红黑树也是一棵二叉查找树,但是因为其自身结构的特点,其本身非常均衡。时间复杂度为O(logn)。因为在每次插入一个节点或者删除一个节点,红黑树都要对此进行调整。 下面先介绍红黑树的特点,红黑树具有以下几个特征:1.每个节点不是红色就是黑色的; 2.根节点总是黑色的; 3.如果节点是红色的,则它的子节点必须
2017-05-15 17:46:20 417
原创 KMP算法
字符串匹配最基础的算法是一个字符一个字符的匹配,若当前不匹配则指针指向下一个字符。基础算法的写法为:int findString(string &s, string &t){ int slen = s.size(); int tlen = t.size(); if (slen < tlen) { return -1; } int j = 0;
2017-05-11 16:14:37 280
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人