博客专栏  >  综合   >  数据结构与算法

数据结构与算法

学习严蔚敏《数据结构》全程实录。

关注
3 已关注
47篇博文
  • 希尔排序

    希尔排序(Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。先取一个小于n的整数d1作为第一个增量,把文件的全...

    2014-07-19 11:03
    1312
  • 快速排序

    原理: 基本思想: 1.从待排序列中任选一个元素作为轴点; 2.将序列中比轴点的值小的放到轴点左边,比轴点的值大的放到轴点右边; 3.以轴为分界线,分别对轴左边和右边部分递归进行1、2操作。 ...

    2014-07-22 14:27
    1051
  • 堆排序

    二叉堆: 二叉堆是完全二叉树或者是近似完全二叉树。 二叉堆满足二个特性: 1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。 2.每个结点的左子树和右子树都是一个二叉堆(都是最...

    2014-07-23 22:08
    1072
  • 归并排序

    归并排序还是比较好理解的。归并的含义是将两个或者两个以上的有序表组合成一个新的有序表。 具体方式是:假设初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得...

    2014-07-24 10:51
    1180
  • 折半插入排序

    之间介绍插入排序时漏掉一种插入方式,那就是折半插入。 这种方式是采用二分查找法去查找插入点,可以减少元素比较次数,但是并不能减少移动次数,复杂度跟直接插入一样,都为O(n^2). 直接上代码:...

    2014-07-27 11:27
    1187
  • 简单插入排序

    直接插入排序是一种最简单的排序方式,它的基本操作是将一个记录插入已排好序的有序表中,从而得到一个新的、记录数增1的有序表。时间复杂度为O(n^2),跟冒泡、选择一样。 核心代码: //按非降序排...

    2014-07-18 12:48
    1268
  • 冒泡排序、选择排序

    下面是两种最基本的排序:冒泡排序、选择排序.复杂度均为O(n^2)。 冒泡排序: bool BubbleSort(int arr[],int len) { if(arr ==...

    2014-07-16 10:22
    1123
  • hash表、hash算法

    概念: 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函...

    2014-07-14 14:24
    1468
  • 二分查找算法

    概念:二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列...

    2014-07-11 11:23
    1374
  • 二叉排序树(BST)

    二叉排序树: 二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree),亦称二叉搜索树。 它或者是一棵空树;或者是具有下列性质的二叉树: (1)若...

    2014-07-11 20:21
    1148
  • 平衡二叉树(AVL树)

    平衡二叉树 或者是一颗空树,或者它的左右子树都是平衡二叉树,且左子树和右子树的深度之差不超过1 。 BF(Balance Factor) 我们将二叉树上节点的左子树深度减去右子树深度...

    2014-07-12 15:51
    1377
  • 最小生成树之克鲁斯卡尔算法

    克鲁斯卡尔算法: 假设连通网N = {V,{E}},则令最小生成树的初始状态为只有n个顶点而无边的非连通图T = {V,{}},图中每个顶点自成一个连通分量。在E中选择一个最小代价边,若该边依附...

    2014-07-09 17:55
    1926
  • 最短路径之Dijkstra算法

    Dijkstra算法: 首先,引进一个辅助向量D,它的每个分量D[i]表示当前所找到的从始点v到每个终点vi的的长度:如D[3]=2表示从始点v到终点3的路径相对最小长度为2。这里强调相对就...

    2014-07-10 19:31
    1462
  • 最小生成树之Prim算法

    Prim算法: 假设N = (V,{E})是连通网,TE是N上最小生成树中边的集合。算法从U={u0}(u0属于V),TE={}开始,重复执行下述操作:在所有u属于U,v属于V-U的边(u,v)...

    2014-07-01 13:11
    1231
  • 有向图的十字链表存储形式

    十字链表是有向图的另一种链式存储结构。可以看成是将有向图的邻接表和逆邻接表(只考虑入度)结合起来得到的一种链表。在十字链表中,对应于有向图中每一个顶点有一个节点,每一条弧也有一个结点。 顶点之间...

    2014-06-29 16:32
    1557
  • 图的存储形式——邻接表

    邻接表:邻接表是图的一种链式存储结构。在邻接表中,对图中每个顶点建立一个单链表,第i个单链表中的节点表示依附于顶点vi的边(对有向图是以顶点vi为尾的弧)。每个结点有三个域组成,其中邻接点域指示与顶点...

    2014-06-26 12:36
    1133
  • 图的存储形式——邻接矩阵(数组)

    邻接矩阵:用两个数组分别存储数据元素(顶点)的信息和数据元素之间的关系(边或弧)的信息。 比如考虑下面这个有向图: 如果用邻接矩阵存储可以表示为: 1.顶点数组: ...

    2014-06-24 13:56
    1523
  • 使用优先队列构建赫夫曼树

    关于赫夫曼编码和赫夫曼树的相关知识可参考之前两篇文章(由二叉树构造赫夫曼树、赫夫曼编码)。本文介绍另一种构建赫夫曼树的方式,采用优先队列. 步骤: 1.首先我们需要统计不同字符出现...

    2014-06-18 12:20
    1622
  • 找重复数字问题

    这是两道面试题,我觉着很有意思。题目本身并不难,只是思路的问题。 题目1: 现有0-99共100个整数,各不相同,将所有的数放入一个数组,随机排布。 数组长度101,多余的数...

    2014-06-16 09:27
    1351
  • 赫夫曼编码

    构造过程: 1.给定一组带权值的节点: 2.生成赫夫曼树: 3.根据“左0右1”的约定生成编码表 实现: /***...

    2014-06-02 20:23
    1345
img博客搬家
img撰写博客
img专家申请
img意见反馈
img返回顶部