随笔分类 -  数据结构与算法

scala编写
摘要:堆排序:O(nlogn) 堆排序实际上是利用堆的性质来进行排序的,要知道堆排序的原理我们首先一定要知道什么是堆。 堆的定义: 堆实际上是一棵完全二叉树。 堆满足两个性质: 1、堆的每一个父节点都大于(或小于)其子节点; 2、堆的每个左子树和右子树也是一个堆。 堆的分类: 堆分为两类: 1、最大堆(大 阅读全文
posted @ 2019-07-26 15:59 virus丶舒 阅读(247) 评论(0) 推荐(0)
摘要:数据结构的介绍 数据结构是一门研究算法的学科,只从有了编程语言也就有了数据结构.学好数据结构可以编写出更加漂亮,更加有效率的代码。 要学习好数据结构就要多多考虑如何将生活中遇到的问题,用程序去实现解决. 程序 = 数据结构 + 算法 数据结构和算法的关系 算法是程序的灵魂,为什么有些网站能够在高并发 阅读全文
posted @ 2019-07-18 21:32 virus丶舒 阅读(244) 评论(0) 推荐(0)
摘要:先看一个实际的需求 先看一个实际的需求 编写的五子棋程序中,有存盘退出和续上盘的功能。 分析问题: 分析问题: 因为该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据.->稀疏数组 基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理 阅读全文
posted @ 2019-07-18 21:30 virus丶舒 阅读(310) 评论(0) 推荐(0)
摘要:队列的一个使用场景 银行排队的案例: 队列介绍 队列是一个有序列表,可以用数组或是链表来实现。 遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出 示意图:(使用数组模拟队列示意图) 数组模拟队列 队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下其中 ma 阅读全文
posted @ 2019-07-18 21:29 virus丶舒 阅读(281) 评论(0) 推荐(0)
摘要:链表介绍 链表是有序的列表,但是它在内存中是存储如下 小结 链表是一个有序列表 链表的数据,在内存空间不一定是连续分布的. 单链表的介绍 单链表(带头结点) 逻辑结构示意图如下 // 所谓带头节点,就是链表的头有一个head节点, 该节点不存放具体的数据,只是为了操作方便而设计的这个节点. 单链表的 阅读全文
posted @ 2019-07-18 21:28 virus丶舒 阅读(317) 评论(0) 推荐(0)
摘要:看一个实际需求 (出栈,入栈,先进后出) 请输入一个表达式 计算式:[7*2*2-5+1-5+3-3] 点击计算【如下图】 请问: 计算机底层是如何运算得到结果的?注意不是简单的把算式列出运算,因为我们看这个算式 7 * 2 * 2 - 5, 但是计算机怎么理解这个算式的(对计算机而言,它接收到的就 阅读全文
posted @ 2019-07-18 21:26 virus丶舒 阅读(202) 评论(0) 推荐(0)
摘要:看个实际应用场景 迷宫问题(回溯) 递归的概念 简单的说: 第归就是函数/方法自己调用自己,每次调用时传入不同的变量.第归有助于编程者解决复杂的问题,同时可以让代码变得简洁。 递归快速入门 我列举两个小案例,来帮助大家理解递归,递归在讲函数时已经讲过(当时讲的相对比较简单),这里在给大家回顾一下递归 阅读全文
posted @ 2019-07-18 21:25 virus丶舒 阅读(223) 评论(0) 推荐(0)
摘要:排序的介绍 排序是将一组数据,依指定的顺序进行排列的过程, 常见的排序: 冒泡排序 选择排序 插入排序 快速排序 归并排序 冒泡排序 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较 相邻元素的排序码,若发现逆序则交换,使排序码较小的元 阅读全文
posted @ 2019-07-18 21:23 virus丶舒 阅读(208) 评论(0) 推荐(0)
摘要:介绍: 在java中,我们常用的查找有两种: 1) 顺序(线性)查找 2) 二分查找 线性查找 有一个数列: {1,8, 10, 89, 1000, 1234} ,判断数列中是否包含此名称【顺序查找】要求: 如果找到了,就提示找到,并给出下标值。 object OrderSearch { def m 阅读全文
posted @ 2019-07-18 21:22 virus丶舒 阅读(214) 评论(0) 推荐(0)
摘要:看一个实际需求 google公司的一个上机题: 有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址..),当输入该员工的id时,要求查找到该员工的所有信息. 要求: 不使用数据库,尽量节省内存,速度越快越好=>哈希表(散列) 哈希表的基本介绍 散列表(Hash tabl 阅读全文
posted @ 2019-07-18 21:20 virus丶舒 阅读(344) 评论(0) 推荐(0)
摘要:先看一个需求 给你一个数组 (7, 3, 10, 12, 5, 1, 9),要求能够高效的完成对数组的查询和添加 二叉排序树介绍 二叉排序树:BST: (Binary Sort(Search) Tree), 对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点 阅读全文
posted @ 2019-07-18 21:13 virus丶舒 阅读(741) 评论(0) 推荐(0)
摘要:顺序存储二叉树的概念 基本说明 基本说明 从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组, 看右面的示意图。 顺序存储二叉树的概念 顺序存储二叉树的特点: 顺序存储二叉树的特点: 顺序二叉树通常只考虑完全二叉树 第n个元素的左子节点为 2 * n + 阅读全文
posted @ 2019-07-18 21:11 virus丶舒 阅读(1048) 评论(0) 推荐(0)
摘要:为什么需要树这种数据结构 树存储方式的分析 能提高数据存储,读取的效率, 比如利用二叉排序树(Binary Sort Tree),既可以保证数据的检索速度,同时也可以保证数据的插入,删除,修改的速度。 二叉树的示意图 树的常用术语(结合示意图理解): 节点 根节点 父节点 子节点 叶子节点 (没有子 阅读全文
posted @ 2019-07-18 21:08 virus丶舒 阅读(347) 评论(0) 推荐(0)