【算法系列-7】堆

转载 2016年08月30日 16:10:02

声明:

本节内容主要来自啊哈磊《啊哈!算法》

正文:

以前吧总搞不明白堆是个什么样的对象,总觉得是个高大上的存在。最近看了啊哈算法一书,感觉有点了解了,所以特别记录一下。

1.

首先来一颗树


树和图有什么区别?

答:树不包含回路。



2.

用一个一维数组就可以存储完全二叉树


如果完全二叉树的一个父节点编号为k,那么它左儿子的编号就是2*k,右儿子的编号就是2*k+1。

如果已知儿子(左儿子或右儿子)的编号是x,那么他父节点的编号就是x/2(取余)。

如果一颗完全二叉树有N个节点,那么这个完全二叉树的高度为log2N,简写logN。


举个例子:



3.

堆-神奇的优先队列

定义:

堆是一种特殊的完全二叉树



所有父节点都比子节点小的完全二叉树,我们成为最小堆(小根堆),反之称之为最大堆(大根堆)。

4.

堆排序

时间复杂度O(NlogN)

5.

【一道思考题的优化思路】

有一个字符序列,已知其中有一个数出现的次数超过了50%,请你找出这个字母;比如a、b、1、2、a、a、a,出现次数超过50%的字符是a。

6.

推荐

人民邮电出版社 《思考的乐趣》 && 《数学之美》


相关文章推荐

openssl之EVP系列之7---信息摘要算法结构概述

openssl之EVP系列之7---信息摘要算法结构概述     ---根据openssl doc/crypto/EVP_DigestInit.pod翻译和自己的理解写成     (作者:Drag...

全文检索、数据挖掘、推荐引擎系列7---条目相似度算法

在实际的项目中,有许多场合需要进行条目相似度计算,比如在电商系统中,经常有喜欢这个商品的用户还喜欢,通常计算商品的相似度是实现这种功能的方法之一,这可以视为一种基于内容的推荐系统的应用。同时,计算相似...

软件开发工期估算系列(7)——規模見積もりの女王様「FP見積もり」【後編】(内附FP简易算法示例)

http://monoist.atmarkit.co.jp/mn/articles/1111/16/news008.html 「見積もり」は、ソフトウェア開発における大きなテーマであ...

数据挖掘系列(7)分类算法评价

一、引言   分类算法有很多,不同分类算法又用很多不同的变种。不同的分类算法有不同的特定,在不同的数据集上表现的效果也不同,我们需要根据特定的任务进行算法的选择,如何选择分类,如何评价一个分类算...

每天学习一算法系列(7) (根据上排给出十个数,在其下排填出对应的十个数)

题目: 给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数 要求下排每个数都是先前上排那十个数在下排出现的次数。 上排的十个数如下:【0,1,2,3,4,5,6,7,8,9】 举个...
  • yuucyf
  • yuucyf
  • 2011年04月28日 17:38
  • 2242

Ng机器学习系列补充:7、神经网络反向传播BP算法(Back Propagation)

机器学习补充系列国际权威的学术组织the IEEE International Conference on Data Mining (ICDM,国际数据哇局会议) 2006年12月评选出了数据挖掘领域...
  • mmc2015
  • mmc2015
  • 2015年01月14日 11:54
  • 1292

经典机器学习算法系列7-svd

1.svd简介 2.svd分解例子 3.协同过滤简单例子 4.利用大点的数据集设计推荐系统的例子...

深度学习与人脸识别系列(7)__人脸识别算法简要说明与总结

作者:wjmishuai 出处:http://blog.csdn.net/wjmishuai/article/details/50854168 声明:版权所有,转载请注明出处 代码下载地址:htt...

数据结构算法之排序系列Java、C源码实现(7)--归并排序

归并排序是将两个或两个以上的有序子表合并成一个新的有序表。初始时,把含有n个结点的待排序序列看做是由n个长度为1的有序表所组成,然后两两归并,得到个长度为2或1的有序子序列;再两两合并,…,如此重复,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【算法系列-7】堆
举报原因:
原因补充:

(最多只允许输入30个字)