
第二阶段(数据结构和算法)
以极客时间小争哥《数据结构与算法之美》教程为参考,以golang代码为实现语言,修炼内功中。
天天water
努力坚持,多学习,多思考。
-
原创 数据结构学习笔记(0X0A)--堆和堆排序
前言:,“堆”(Heap)是一种特殊的树。堆这种数据结构的应用场景非常多,最经典的莫过于堆排序了。堆排序是一种原地的、时间复杂度为 O(nlogn) 的排序算法。1. 什么是堆堆是一个完全二叉树; 堆中每一个节点的值都必须大于等于(或小于等于)其子树中每个节点的值。2. 堆的实现和常见操作完全二叉树比较适合用数组来存储。存储思路:数组中下标为 i 的节点的左子节点,就是下标...2020-04-06 23:40:312421
0
-
原创 数据结构学习笔记(0X09)--二叉树
1. 二叉树相关定义二叉树:每个节点最多有两个“叉”的树,也就是两个子节点,分别是左子节点和右子节点。满二叉树:叶子节点全都在最底层,除了叶子节点之外,每个节点都有左右两个子节点,这种二叉树就叫作满二叉树。完全二叉树:叶子节点都在最底下两层,最后一层的叶子节点都靠左排列,并且除了最后一层,其他层的节点个数都要达到最大,这种二叉树叫作完全二叉树。2. 如何存储一个二叉树链式存储法...2020-03-29 23:25:282436
0
-
原创 数据结构学习笔记(0X08)--散列表
一、散列表的由来?1.散列表来源于数组,它借助散列函数对数组这种数据结构进行扩展,利用的是数组支持按照下标随机访问元素的特性。2.需要存储在散列表中的数据我们称为键,将键转化为数组下标的方法称为散列函数,散列函数的计算结果称为散列值。3.将数据存储在散列值对应的数组下标位置。二、如何设计散列函数?总结3点设计散列函数的基本要求1.散列函数计算得到的散列值是一个非负整数。2.若k...2020-01-04 21:47:202381
0