
2. 数据结构
文章平均质量分 91
Jurbo
努力努力再努力,保持一颗求知的心
展开
-
数据结构 学习笔记(八):图(中):最短路径问题(单源最短路径 Dijkstra,多源最短路径 Floyd)
7.1 最短路径问题7.1.1 概述图论里最少的步骤就是最短路径问题。最短路径问题的抽象在网络中,求两个不同顶点之间的所有路径中,边的权值之和最小的那一条路径。这条路径就是两点之间的最短路径。第一个顶点为源点,最后一个顶点为终点。问题分类单源最短路径问题:从某固定源点出发,求其到所有其他顶点的最短路径。单源最短路径问题又分为两类: - (有向)无权图 - (有向)有权图多源最短路径问题:求任原创 2017-07-10 14:23:07 · 4095 阅读 · 0 评论 -
数据结构 学习笔记(六):树(下):堆,哈夫曼树和哈夫曼编码,集合及运算
请跟着上一讲 数据结构 学习笔记(五):树(中):二叉搜索树,平衡二叉树 继续学习5.1 堆5.1.1 什么是堆优先队列:特殊的“队列”,取出元素的顺序是依照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序。优先队列的完全二叉树表示:堆的两个特性结构性:用数组表示的完全二叉树 有序性:任一结点的关键字是其子树所有结点的最大值(或最小值) 最大堆(也称为大顶堆):最大值 最小堆(也称小顶原创 2017-07-09 16:31:47 · 1605 阅读 · 3 评论 -
数据结构 学习笔记(五):树(中):二叉搜索树,平衡二叉树
请跟着上一讲 数据结构 学习笔记(四):树(上):树的表示,二分查找,二叉树,先中后层次遍历 继续学习4.1 二叉搜索树4.1.1 二叉搜索树及查找什么是二叉搜索树回顾上一讲提到的查找问题:静态查找(集合元素不动,只发生查找操作)和动态查找(集合元素经常动态变化,经常发生插入删除)针对动态查找,数据如何组织?静态查找很好的解决方法是二分查找,因为提前有效的组织了数据,使它有序化,使线性的查找过原创 2017-07-09 15:26:43 · 1247 阅读 · 0 评论 -
数据结构 学习笔记(四):树(上):树的表示,二分查找,二叉树,先中后层次遍历
前言请跟着上一讲http://blog.youkuaiyun.com/jurbo/article/details/52595821继续学习3.1 树与树的表示3.1.1 引子(顺序查找)什么是树客观世界中许多事物存在层次关系人类社会家谱社会组织结构图书信息管理分层次组织在管理上具有更高的效率!数据管理的基本操作之一:查找如何实现有效率的查找?查找查找:根据某个给定关键字K,从集合R中找出关键字与K相同的原创 2016-09-21 15:45:22 · 2402 阅读 · 0 评论 -
数据结构 学习笔记(一):基本概念:什么是数据结构和算法,应用实例
前言因为要开始实习了,发现之前有些学过的东西。哪怕是我曾经花了很大的力气学过的,因为长时间的没有被使用。导致很多知识都忘记了。所以准备在投简历面试前,把知识全部巩固一下。在中国大学MOOC(慕课)网上,准备开始学习浙江大学的数据结构,由陈越、何钦铭老师主讲。(讲的非常好)课程地址: http://www.icourse163.org/learn/ZJU-93001?tid=1001757011#/原创 2016-09-19 19:14:48 · 3078 阅读 · 0 评论 -
数据结构 学习笔记(二):线性结构:线性表(顺序表,链表,广义表,多重链表)
前言请跟着上一讲http://blog.youkuaiyun.com/jurbo/article/details/52586981继续学习2.1 线性表及其实现2.1.1 引子:多项式表示【例】:一元多项式及其运算一元多项式: 主要运算:多项式相加、相减、相乘等【分析】如何表示多项式?多项式的关键数据:多项式项数n各项系数及指数方法1:顺序存储结构直接表示方法2:顺序存储结构表示非零项方法3:链表结构存原创 2016-09-20 10:54:18 · 4974 阅读 · 1 评论 -
数据结构 学习笔记(三):线性结构:堆栈,队列,表达式求值,多项式加法运算
前言请跟着上一讲http://blog.youkuaiyun.com/Jurbo/article/details/52593532继续学习2.2 堆栈2.2.1 什么是堆栈计算机如何进行表达式求值?【例】算术表达式5+6/2-3*4。正确理解:5+6/2-3*4=5+3-3*4=8-3*4=8-12=-4由两类对象构成的: 运算数,如2、3、4运算符号,如+、- 、*、/不同运算符号优先级不一样 后缀原创 2016-09-20 15:08:17 · 3193 阅读 · 1 评论 -
数据结构 学习笔记(完):散列查找:散列(哈希)表,散列函数的构造,冲突处理,性能分析
11.1 散列表(哈希表)11.1.1 散列的基本思路散列查找。先讲一个例子:比如说,C 语言编译的时候,C语言里有个规则就是变量名必须先定义(或声明)后再使用。当编译器碰到变量名的时候,它可能在两个位置,一个是在它定义(或声明)的地方,一个是在它使用的地方。当编译器碰到他使用的地方,它就要检查,该变量是否定义过,如果没有定义过,就会报错;如果定义过,还要知道这个变量是什么类型的,这种类型在这个语句原创 2017-07-11 10:55:10 · 2818 阅读 · 0 评论 -
数据结构 学习笔记(十一):排序(下):快速 / 表 / 桶 / 基数 排序,排序算法的比较
10.1 快速排序在大多数的情况下,快速排序的表现都非常好。10.1.1 算法概述和归并排序一样,都是使用了分而治之的思想。分而治之的例子:伪代码描述:10.1.2 选主元取头、中、尾的中位数。伪代码描述:C 语言实现:快速排序直接调用库函数/* 快速排序 - 直接调用库函数 */#include <stdlib.h>/*---------------简单整数排序-----------------原创 2017-07-10 19:53:11 · 1345 阅读 · 0 评论 -
数据结构 学习笔记(十):排序(上):简单排序(冒泡,插入),希尔 / 选择 / 堆 / 归并 排序
9.1 简单排序(冒泡,插入)9.1.1 概述后面介绍的所有排序算法,都默认为这样的格式:9.1.2 冒泡排序思路:从上到下比较相邻的元素,每次和下面那个元素作比较并交换。一共要完成N次排序。C 语言实现void Bubble_Sort(ElementType A[],int N){ int p,i,flag; for(p=N-1;p>=0;p--) { f原创 2017-07-10 18:51:47 · 1121 阅读 · 0 评论 -
数据结构 学习笔记(九):图(下):最小生成树(Prim,Kruskal 算法),拓扑排序 AOV,关键路径 AOE
最小生成树什么是最小生成树解决最小生成树有很多算法,但是归结起来都是贪心算法。贪心算法:什么是“贪”:每一步都要最好的什么是“好”:权重最小的边但是因为是最小生成树,所以这个贪心算法还需要约束: 只能用图里有的边只能正好用掉 | V | - 1 条边不能有回路贪心算法由两个著名的算法:Prim 算法 和 Kruskal 算法。Prim 算法Prim 算法–选一个结点,让一棵小树“长大”原创 2017-07-10 15:43:09 · 2321 阅读 · 0 评论 -
数据结构 学习笔记(七):图(上):图的表示方法(邻接表,邻接矩阵),遍历(DFS,BFS)
6.1 什么是图6.1.1 定义图的定义:表示多对多的关系抽象数据类型定义怎么在程序中表示一个图:邻接矩阵和邻接表。6.1.2 邻接矩阵表示法定义邻接矩阵的优点:邻接矩阵的缺点:C 语言实现/* 图的邻接矩阵表示法 */#define MaxVertexNum 100 /* 最大顶点数设为100 */#define INFINITY 65535 /* ∞设为双字节无符号整数的最原创 2017-07-10 12:41:10 · 7739 阅读 · 1 评论