数据结构与算法的学习之旅
朋大白
期待996,别来007!!!
展开
-
数据结构与算法——栈的顺序存储结构学习(1)
栈顶(Top) 允许插入和删除的一端 栈底(Bottom) 和栈顶相反的一端 空栈 不含任何数据元素的栈 栈是后进先出的线性表(LIFO 结构) 栈,这个线性表的插入和删除位置:栈底是固定的,最先进栈的只能在栈底 栈的插入操作→ 进栈(压栈、入栈) 栈的删除操作→ 出栈(弹栈) 在不是所有元素都进栈的情况下: 事先技巧你的元素也可以出栈,只要保证是栈顶元素的出栈就可以了 eg. 现在有3...原创 2019-04-26 11:21:51 · 449 阅读 · 0 评论 -
排序(2)
堆排序 堆排序是一种相当优秀的排序算法,也是大量数据中Top k问题的最优方法,常用于数据量非常大的排序场景。 堆排序把数组看成一颗完全二叉树,利用完全二叉树的父节点与左右孩子节点的下标关系来进行相关排序操作。 我们先回顾一下数组与完全二叉树如何对应起来,对于数组,我们把A的每个元素看成完全二叉树的一个节点,那么,把作为其根节点,剩下的逐层从左至右,从上至下依次排列,对于这棵完全二叉树有这样的关系...转载 2019-05-27 10:50:01 · 103 阅读 · 0 评论 -
算法——权重随机
/// <summary> /// 权重对象 /// </summary> public class RandomObject { /// <summary> /// 权重 /// </summary> public int Weight { se...翻译 2019-05-22 19:28:51 · 276 阅读 · 0 评论 -
排序(1)
直接插入排序 直接插入排序是非常简单的,对于一个长度为n的关键字序列a1,a2,a3,a4,a5…an, 一句话来说:我们就是要把每个关键字都放到其之前的有序子序列中的合适位置。 具体是这样:你看,该序列的第一个元素a1之前不存在子序列因此不用考虑,故从第二个元素开始,先把a2的值保存到Key中,那么此时,a2如果大于等于a1,那么a2就不动,因为这就是它当前合适的位置,若是a2小于a1那么就把a...转载 2019-05-26 16:56:10 · 103 阅读 · 0 评论 -
十大排序
https://blog.csdn.net/coolwriter/article/details/78732728 从中学到很多转载 2019-05-22 08:38:04 · 86 阅读 · 0 评论 -
五大算法分析
(一)分治法(divide and conquer method) 是将待求解的原问题划分成k个较小规模的子问题,对这k个子问题分别求解。如果子问题的规模仍然不够小,则再将每个子问题划分为k个规模更小的子问题,如此分解下去,直到问题规模足够小,很容易求出其解为止(子问题求解思路一致),再将子问题的解合并为一个更大规模的问题的解,自底向上逐步求出原问题...转载 2019-05-24 21:02:10 · 621 阅读 · 0 评论 -
数据结构与算法——二叉树(3、遍历二叉树)
二叉树遍历原理 访问 和 次序 1、前序遍历 规则:若二叉树为空,则 空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树 顺序:A B D G H C E I F 2、中序遍历 规则:若树为空,则 空操作返回,否则从根结点开始(注意并不是先访问根结点),中序遍历根结点的左子树,然后是返回根结点,最后中序遍历右子树 顺序:G D H B A E I C F 3、后序遍历 规...翻译 2019-05-11 16:04:26 · 181 阅读 · 0 评论 -
数据结构与算法——二叉树(2、二叉树的性质)
性质一 性质二 性质三 性质4、5 针对于完全二叉树 性质四 性质五原创 2019-05-11 15:33:48 · 175 阅读 · 0 评论 -
数据结构与算法——二叉树(1、定义及特殊类型)
二叉树 二叉树特点 1、每个结点最多有两棵子树,所以二叉树中不存在度大于 2 的结点(最多有) 2、左子树和右子树是有顺序的,次序不能任意颠倒 3、即使树中某个结点只有一颗子树,也要区分他是左子树还是右子树 二叉树的五种基本形态 1、空二叉树 2、只有一个根结点 3、根结点只有左子树 4、根结点只有右子树 5、根结点既有左子树又有右子树 特殊二叉树 1、斜树 ①所有的结点都只有左子树的二叉树 ...翻译 2019-05-11 14:57:05 · 213 阅读 · 0 评论 -
数据结构与算法——树的定义(1)
树的定义 划重点 1、n>0时,根节点是唯一的,不可能存在多个根节点(不能和平常的大树混淆) 2、m>0时,子树的个数没有限制,但它们一定是互不相交的 eg.下图的就不符合树的定义: 结点的分类 树的结点包含一个数据元素及若干指向其子树的分支 结点拥有的子树数称为结点的度 度为 0 的结点称为叶节点(终端结点) 度不为 0 的结点称为非终端节点(分支结点) 除根节点之外,分支结点...原创 2019-05-11 14:07:48 · 297 阅读 · 0 评论 -
数据结构与算法——排序
翻译 2019-05-15 20:26:21 · 63 阅读 · 0 评论 -
数据结构与算法的学习——排序的基本概念和分类
内排序与外排序 是在整个过程中,待排序的所有记录全部被放置在内存中外排序是 由于排序的记录个数太多,不能同时放置在内存,真个排序过程需要在内外存之间多次交换数据才能进行 排序算法的性能主要的影响: 1、时间性能 2、辅助空间 3、算法的复杂性 排序用到的结构与函数: ...翻译 2019-05-20 21:25:44 · 100 阅读 · 0 评论 -
线性表的链式存储结构
特点:用一组原创 2019-04-24 20:23:02 · 857 阅读 · 0 评论 -
初学数据结构与算法
程序设计 = 数据结构 + 算法 1、数据结构基础知识 数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合 数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录 数据项:一个数据元素可以有若干个数据项组成(数据项是数据不可分割的最小单位) 数据对象:是性质相同的数据元素的集合,是数据的子集 什么叫性质相同呢,是指数...原创 2019-04-18 10:58:03 · 237 阅读 · 1 评论 -
线性表顺序存储结构的方法
顺序存储 1.顺序表的优点:读取元素时可直接定位, 所以在某些操作(比如将顺序表元素反转合围)中,不需要完全遍历, 循环次数(即时间复杂度)相对完全遍历而言能减少一半。 2.顺序表的缺点:插入/删除元素,因为要保持其顺序性,所以后续元素需要移动, 增加了时间开销。 SeqListDemo 1、主函数中的各项输出 using System; using System.Collections.Gene...原创 2019-04-22 19:54:43 · 288 阅读 · 0 评论 -
数据结构与算法大纲小结
第 1 章 基础 1、数据结构:存储、组织数据的方式 2、数据结构形式:物理+逻辑 3、算法是什么:方法+思路 4、算法复杂度:时间+空间 5、数据结构和算法关系:数据结构+算法=程序,两者是一体的 6、抽象数据类型ADT:数据+动作,目的是简化开发难度 第 2 章 快速入门 1、算法特性:量入出题题能解,行有意步步可为 a.输入: 算法具有0个或多个输入 b.输出: 算法至少有1个或多个输出 ...转载 2019-05-23 21:34:25 · 173 阅读 · 0 评论