摘要:
之前介绍了树,主要实现了二叉树的代码。在二叉树的基础上有许多衍生的树,如二叉搜索树、哈夫曼树等,今天学习一下二叉搜索树。 二叉搜索树 二叉搜索树是二叉树的一种,是应用非常广泛的一种二叉树,英文简称为 BST 又被称为:二叉查找树、二叉排序树 特点 任意一个节点的值都大于其左子树所有节点的值 任意 阅读全文
摘要:
Hash表 Hash也叫散列、哈希,是一种根据key-value对进行存储的数据结构。每个value对应一个key,这样查找的时候就无需遍历。 Hash表使用数组作为底层结构,数组中每个区域都存储着Hash,这就是Hash表。 列表、数组、树这些数据结构在查询数据时的时间复杂度通常为O(n),而Ha 阅读全文
摘要:
图是比树更复杂的结构,树是一对多的关系,图是多对多的关系。 一、基本概念 1、定义:图(graph)是由一些点(vertex)和这些点之间的连线(edge)所组成的;其中,点通常被成为"顶点(vertex)",而点与点之间的连线则被成为"边或弧"(edege)。通常记为,G=(V,E)。 2、根据边 阅读全文
摘要:
之前的都是线性结构,而树结构在计算机应用中的应用更加广泛。linux中的目录结构,某些数据库的底层存储等,都是采用树结构进行构架的。 树的概念 线性表是一对一的关系,而树是一对多的关系。 树的结点:包含一个数据元素及若干指向子树的分支; 孩子结点:结点的子树的根称为该结点的孩子; 双亲结点:B 结点 阅读全文
摘要:
队列(Queue):在逻辑上是一种线性存储结构。它有以下几个特点: 1、队列中数据是按照"先进先出(FIFO, First-In-First-Out)"方式进出队列的。 2、 队列只允许在"队首"进行删除操作,而在"队尾"进行插入操作。 队列通常包括的两种操作:入队列 和 出队列。 队列的种类也很多 阅读全文
摘要:
栈(stack): 在逻辑上是一种线性存储结构,它有以下几个特点: 1、栈中数据是按照"后进先出(LIFO, Last In First Out)"方式进出栈的。 2、向栈中添加/删除数据时,只能从栈顶进行操作。 栈通常包括的三种操作:push、peek、pop。 push -- 向栈中添加元素。 阅读全文
摘要:
顺序表是最简单的线性表,也就是数组。很多语言都把把它当做内置的基本数据类型,这里的数组没有对应数据结构的操作。 数组是顺序存储的结构,连续分配一段内存用于存储数据。在逻辑结构和物理结构上都是连续的。 顺序表建立 在java内置的数组上建立顺序表。 public class Array{ privat 阅读全文
摘要:
链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。 使用链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销 阅读全文
摘要:
图是比树更复杂的结构,树是一对多的关系,图是多对多的关系。 一、基本概念 1、定义:图(graph)是由一些点(vertex)和这些点之间的连线(edge)所组成的;其中,点通常被成为"顶点(vertex)",而点与点之间的连线则被成为"边或弧"(edege)。通常记为,G=(V,E)。 2、根据边 阅读全文
摘要:
之前的都是线性结构,而树结构在计算机应用中的应用更加广泛。linux中的目录结构,某些数据库的底层存储等,都是采用树结构进行构架的。 树的概念 线性表是一对一的关系,而树是一对多的关系。 树的结点:包含一个数据元素及若干指向子树的分支; 孩子结点:结点的子树的根称为该结点的孩子; 双亲结点:B 结点 阅读全文
摘要:
队列(Queue):在逻辑上是一种线性存储结构。它有以下几个特点: 1、队列中数据是按照"先进先出(FIFO, First-In-First-Out)"方式进出队列的。 2、 队列只允许在"队首"进行删除操作,而在"队尾"进行插入操作。 队列通常包括的两种操作:入队列 和 出队列。 队列的种类也很多 阅读全文
摘要:
栈(stack): 在逻辑上是一种线性存储结构,它有以下几个特点: 1、栈中数据是按照"后进先出(LIFO, Last In First Out)"方式进出栈的。 2、向栈中添加/删除数据时,只能从栈顶进行操作。 栈通常包括的三种操作:push、peek、pop。 push -- 向栈中添加元素。 阅读全文
摘要:
链表是线性表,链表的特点就是可以动态增减元素。种类有单向链表、双向链表,循环链表。 一、单链表 单链表的储存思想使用指针表示节点之间的逻辑关系,它的储存单元可以连续也可以不连续,每个储存单元需要储存信息和储存与后继节点的地址信息,储存单元又称之为节点。单链表由头指针唯一确定,整个单链表的操作必须由头 阅读全文
摘要:
线性表是最简单的数据结构,而顺序表又是最简单的线性表,其基本思想是用一段地址连续的储存单元依次存储线性表的数据元素; 数组就是线性表,不过通常作为内置的数据结构,顺序表用数组为底层容器,优点在于可以动态增加删除元素,还可以自定义查找,可以说顺序表就是增强的数组。 顺序表1.0版本 这是1.0版本的顺 阅读全文
摘要:
数据结构与算法引言 数据结构和算法是计算机专业重要的基础课程。 数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。 算法简单来说就是解决问题的步骤。 有了一个个数据结构和算法,我们可以编写出高质量的代码,高性能的产品。 数据结构 数据结构不仅仅是简单的存储数据的 阅读全文
摘要:
排序算法(c语言版) 1、插入排序 #include<stdio.h> //插入排序,升序 void insertion_sort(int arr[], int len){ int i,j,key; for (i=1;i<len;i++){ key = arr[i];//arr[i]为待插入的元素, 阅读全文
摘要:
ThreadPoolExecutor线程池解析 一、ThreadPoolExecutor常见参数 jdk中Executors提供了几种常用的线程池,底层都是ThreadPoolExecutor。 public ThreadPoolExecutor(int corePoolSize,//核心线程数 i 阅读全文
摘要:
1、定义一个接口,exectue方法为抽象方法 import java.io.IOException; public interface CommonOperateCallBack<T> { /** * 前置检查 */ default void before() { } /** * 执行结果. * 阅读全文
摘要:
Mongo语法 类比mysql中的一些用法,记录mongo用法 1、查询部分字段 字段标注不为0则取该字段,为0则不取,_id字段默认取,除_id外不同字段标注值必须相同 db.getCollection('doctor').find({},{name:1,_id:0}) 2、给字段起别名 聚合操作 阅读全文