随笔分类 -  数据结构

摘要:堆的实现 虽然我们之前的介绍堆的时候是一个二叉树,但是我们实现堆的时候并不是按照传统的二叉树实现(传统的二叉树是用链的形式,即一个父节点存放两个子节点的引用) 为什么要这样说呢? 我们先看一下堆的结构: 如果我们观察每一个节点的顺序,我们会发现一个有趣的规律: 对于任意个下标a的元素,他的左孩子下标 阅读全文
posted @ 2017-09-11 16:47 宇的季节 阅读(416) 评论(0) 推荐(0)
摘要:数据结构之堆(Heap):插入、取值、排序。 堆是一种数据结构,分为最小堆和最大堆,可以用二叉树来表示。 在二叉树的任意的一个三角结构中(一个父节点,两个子节点),需要满足以下两个条件: 1、父节点要是最小的,就是最小堆(或最大的,就是最大堆),两个子节点之间没有要求 2、数据插入的顺序是一层一层的 阅读全文
posted @ 2017-09-11 16:37 宇的季节 阅读(4843) 评论(3) 推荐(4)
摘要:插入排序也是一个比较常见的排序,今天就看看插入排序是如何实现的 从第2个数开始,将此数依次与前面的数进行比较,直到满足条件,插入此数。 第一步: 第二步: 第三步: 第四步: ...... 依次类推,我们发现,当要插入第n个数时候,前n-1个数已经排好序,我们只需要找到距离此数最近的比他小的数(增序 阅读全文
posted @ 2017-09-10 15:34 宇的季节 阅读(330) 评论(0) 推荐(0)
摘要:归并排序 在一些常用的排序中,归并排序在时间开销上来说可以是排序中的最佳实践之一(时间复杂度=n*log n),今天我们就来看看归并是如何实现的。 归并排序大致可以分为两步: 1、将数组从中间分开,对两边分别排序。 2、将两个有序的数组进行合并。 所以实现归并排序主要也就是解决这两个问题。 下图是归 阅读全文
posted @ 2017-09-10 15:22 宇的季节 阅读(6437) 评论(2) 推荐(3)