02 2018 档案

摘要://由大到小//快速排序(待排序数组,左侧起点,右侧起点) void quickSort(int *array, int l, int r) { if ( l >= r) return; int i = l,j = r; int temp; while (i != j) { for ( ;j>i;j 阅读全文
posted @ 2018-02-26 09:26 Oran 阅读(1071) 评论(0) 推荐(0)
摘要:1、插入排序 直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的元素,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。 设数组为a[0…n-1]。 1. 初始时,a[0]自成1个有序区,无序区为a[1..n-1]。令i=1 2. 将a[i] 阅读全文
posted @ 2018-02-22 10:20 Oran 阅读(253) 评论(0) 推荐(0)
摘要:散列表(哈希表) 比较难理解的官方定义:散列表/哈希表(Hash table),是根据关键码值(Key value)而直接进行访问的数据结构。它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 举个例子,我们在查找中文字典时。假设我们 阅读全文
posted @ 2018-02-13 14:59 Oran 阅读(222) 评论(0) 推荐(0)
摘要:在说明最小生成树之前,先重温一下其他的几个概念。 连通图:任意两个顶点都有路径相通的无向图,称为连通图。(注意不是边,而是路径) 强连通图:任意两个顶点都有路径相通的有向图,称为强连通图。 网:图的边具有一定的意义,每条边都对应着一个数据,称为权,这种图被称为网。 连通网,同理。 最小生成树 生成树 阅读全文
posted @ 2018-02-09 15:58 Oran 阅读(695) 评论(0) 推荐(0)
摘要:深度优先搜索 顾名思义。我们以下面的图为例: 图-示例图 深度优先搜索的策略: 随便选择一个顶点,比如 0 ,从 0 开始,随便选择一个与 0 邻接的顶点 1 ,继续寻找和 1 邻接的顶点, 3 ,继续选择与 3 邻接的顶点 4 。4 没有其他邻接的顶点了,于是我们返回 3 ,3 还有另外一个 邻接 阅读全文
posted @ 2018-02-08 09:47 Oran 阅读(465) 评论(0) 推荐(0)
摘要:十字链表 你会发现,要表示一个有向图,因为有 出度 和 入度 ,需要两个邻接表:邻接表和逆邻接表。 其实我们可以把这两个表整合在一起,也就是十字链表(Orthogonal List)。 我们依然需要构造一种结构体A,用结构体A的数组来存放所有顶点-我们其实可以把它叫做 顶点表。 我们构造的结构体A如 阅读全文
posted @ 2018-02-07 16:10 Oran 阅读(879) 评论(0) 推荐(0)
摘要:图 一个图,由顶点(vertex)集和边(edge)集E组成。每一条边,连接了两个顶点,也就是一个点对。 有向图 无向图 如果点对之后是分次序的(比如仅限于从A点到B点),那么这这个图就是有向图(digraph)。此时我们可以把边叫做弧(arc)。 如果没有次序的差别,那么就是无向图。 图-无向图和 阅读全文
posted @ 2018-02-06 16:59 Oran 阅读(1654) 评论(0) 推荐(0)
摘要:堆 堆,是一棵被完全填满的二叉树,唯一可能的例外是它的底层,底层的元素从左到右填入。这样的树被称为完全二叉树。下图就是一个例子: 图-完全二叉树/堆 因为二叉堆非常具有规律,所以实际上我们可以直接用数组来表示,而不需要结构体和指针。 比如上图中的堆,我们可以用下面这个数组来表示 图-堆的数组实现 可 阅读全文
posted @ 2018-02-05 15:38 Oran 阅读(232) 评论(0) 推荐(0)
摘要:二叉树 二叉树(binary)是一种特殊的树。二叉树的每个节点最多只能有2个子节点。 图-二叉树的结构示意/实现逻辑(这棵树只有展示用途,没有实际意义) 因为子节点的个数确定了,所以每一个节点只需要两个指针,一个指向当前节点的左子节点(left children),一个指向右子节点(right ch 阅读全文
posted @ 2018-02-02 10:11 Oran 阅读(228) 评论(0) 推荐(0)