摘要: 终于来到图这部分,一起了解下这种“最复杂”的数据结构。 之前提到的数组、树的各节点(元素)之间存在前后关系(左右节点),或者层次关系(父节点,子节点)。而图结构中一个节点可以有多个关联节点,多个节点又可以关联同一个节点。任意两个节点都可能存在关系。 我们这次从一个具体例子来看,最后再给出各个定义(复 阅读全文
posted @ 2022-07-23 17:23 binary220615 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 1952年,David Huffman发表了一篇名为《一种构建最优编码的方法》( A Method for the Construction of Minimum-Redundancy Codes)的论文,提出了一种构建最优编码(最少冗余)的方法,这种方法后来被称为哈夫曼编码(Huffman cod 阅读全文
posted @ 2022-07-17 15:29 binary220615 阅读(483) 评论(0) 推荐(0) 编辑
摘要: 一种特殊的二叉树——堆(Binary Heaps) 堆是具有以下两种特性(限制)的二叉树。 一、属于完全二叉树(complete binary tree) 二、每个节点的值必须大于或等于(或者小于等于)子节点的值 首先看下完全二叉树的定义:除最底层节点外,所有层节点都完全填充且必须从左侧开始填充。简 阅读全文
posted @ 2022-07-06 14:07 binary220615 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 我们理解一个新的事物,无非是先知道它的定义,再关联一些相似的事物,然后再结合一些实际应用场景。我们就按这个套路理解下“树”这种结构。 讲树之前,我们先回顾下基本的数组和链表。 数组 数组是申请一段连续的内存空间来存储相同类型的数据,由于是相同类型的数据,我们就可以根据数据类型的长度(比如int类型, 阅读全文
posted @ 2022-06-30 11:45 binary220615 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 减半再减半,减到剩一个——如何利用有序数列的特性 记得之前有档综艺节目“幸运52”,主持人让选手规定时间内猜商品的价格,针对选手的报价主持人提示“高了”或者“低了”,直到价格猜对就可以获得此商品。比如猜电视机的价格,选手出价8000,主持人回答“高了“,选手再出价4000,回答”低了“……6000— 阅读全文
posted @ 2022-06-24 13:39 binary220615 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 我们都考一百分,就都是第一名了——用分组的方法来避免排序 之前介绍的几种排序算法都涉及到各元素间的比较、移动,能否避免或者尽量减少这些开销呢?接下来要介绍的几种“线性排序”方法或许能带给我们新思路。 一 桶排序 对数据进行分桶(分组),再按桶的顺序来处理数据。也有之前提到的“分治”的意思。有些特殊数 阅读全文
posted @ 2022-06-22 11:12 binary220615 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 处理好这段数据就行——分治的思想来解决排序问题 有了之前的预备知识,我们正式开始归并排序和快速排序。 一 归并排序 核心思想是“分治”,把整体拆解成部分,对部分进行排序后再合并。涉及到二分法、递归、有序数组合并三个方法。 首先说二分法,就是对一个数组不断的从中间切分,每切分一次就分成左右两部分,然后 阅读全文
posted @ 2022-06-20 18:09 binary220615 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 一个复杂的问题可以拆解成几个简单的问题,再把每个简单的问题解决掉!——通过两个简单的问题来提前准备下归并排序和快速排序。 问题一 如何合并两个有序的数组为一个新的有序数组? 例如数组a为[2 3 6] 数组b为 [1 4 5],两个数组都是从小到大排列的,经过处理后结果为[1 2 3 4 5 6] 阅读全文
posted @ 2022-06-17 21:57 binary220615 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 总结下三种基础的排序算法,按自己的思路来理解的,代码不是最优的也不够简练,主要为了记录思考过程,帮助大家理解算法的基本原理。 首先说下对排序的理解,工作中很少会手写一个排序算法,用也是现成的,有些数据甚至是从数据库中直接order by出来的,复杂点也就是取个最大值,或者把几个数据项中的数据合并后按 阅读全文
posted @ 2022-06-15 15:14 binary220615 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 最近在看《数据结构与算法之美》,里面讲的很多东西自己都知道,部分内容工作中也用到了,虽然10多年来一直从事开发工作,但有些细节还是不清楚。而最近居家休息,有充足的时间来整理,就以这个为切入点,整理下这些基础知识。一是记录下思考过程,二是希望能帮助到有相关需求的网友,希望大家相互交流、切磋,共同进步! 阅读全文
posted @ 2022-06-15 10:34 binary220615 阅读(103) 评论(0) 推荐(0) 编辑