关于算法:算法学习笔记day3

3次阅读

共计 492 个字符,预计需要花费 2 分钟才能阅读完成。

原视频

发现一个数据结构讲挺好的数据结构与算法教程

二叉树

  1. 如果二叉树中除了叶子结点,每个结点的度都为 2,则此二叉树称为满二叉树。
  2. 如果二叉树中除去最初一层节点为满二叉树,且最初一层的结点顺次从左到右散布,则此二叉树被称为齐全二叉树。
  1. 任意节点的父节点的索引为(n-1)/2; 任意节点左孩子为 2n + 1;右节点为 2n + 2;( 这个不必记啊,这个回头画个图,把索引标上,现找法则就行, 记住这玩意儿有法则就行

把上图二叉树节点当成数组索引,其实数组就是一个齐全二叉树,比方:而这个齐全二叉树就是堆

  1. 大根堆:任意节点大于所有其子节点的堆 为大根堆;反之为小根堆
  2. 构建大根堆(heapInsert): 一个个把值放到堆开端,比拟他和他父亲,谁大谁在下面,反复此过程
  3. 顶部值是任意值,上面为堆进行重排(heapify): 向下根本人两个节点的最大值比拟小就换下去,反复此过程
  4. 堆两头值被批改: 如果改小了往下进行 heapify 改大了网上进行 heapInsert

堆排序

思路:先将数组转成大根堆(heapInsert)每次把大根堆的顶点 pop 进来,把堆的最小点移到头上,进行 heapify

源代码

引申浏览

数据结构:堆(Heap)

正文完
 0