堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法: 大顶堆:每个节点的值都大于或等于其子节点的值,在堆排序算法中... ...
分类:
编程语言 时间:
2019-12-02 23:13:27
阅读次数:
95
我们可以使用二叉堆数据结构来帮助我们创建一个非常著名的排序算法:堆排序算法。它包含下面三个步骤。 (1) 用数组创建一个最大堆用作源数据。 (2) 在创建最大堆后,最大的值会被存储在堆的第一个位置。我们要将它替换为堆的最后一个值,将堆的大小减1。 (3) 最后,我们将堆的根节点下移并重复步骤2直到堆 ...
分类:
编程语言 时间:
2019-10-27 16:58:16
阅读次数:
97
堆满足的条件:1,是一颗完全二叉树。2,大根堆:父节点大于各个孩子节点。每个节点都满足这个道理。小根堆同理。 parent = (i-1)/2 #i为当前节点 left = 2*i+1 right = 2*i + 2 堆可以分为大根堆和小根堆,这里用大根堆的情况来定义操作:(1)大根堆调整(max_ ...
分类:
编程语言 时间:
2019-10-14 16:13:54
阅读次数:
98
1.完全二叉树的概念 若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。 完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结 ...
分类:
编程语言 时间:
2019-09-19 10:28:29
阅读次数:
136
1、算法介绍 1.1、数据结构——堆 堆是一种近似完全二叉树的数据结构,其主要性质是:节点值大于等于(小于等于)其子节点的值。 大顶堆:节点值大于等于其子节点的值,用于升序排序。 小顶堆:节点值小于等于其子节点的值,用于降序排序。 1.2、堆的构建 1.3、算法步骤 (1)未排序序列构建堆 (2)堆 ...
分类:
编程语言 时间:
2019-05-29 14:20:29
阅读次数:
116
题目 题目:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 解析 思路1 这一题应用堆排序算法复杂度只有O(nlog k),堆是完全二叉树的一种,最大堆就是最上面的数是最大的该方法基于二叉树或者堆来实现,首先把数组前k个数字 ...
分类:
编程语言 时间:
2019-05-02 17:09:01
阅读次数:
169
堆排序算法 1000(ms) 10000(kb) 2631 / 5595 1000(ms) 10000(kb) 2631 / 5595 编写程序堆排序算法。按照从小到大的顺序进行排序,测试数据为整数。 输入 第一行是待排序数据元素的个数; 第二行是待排序的数据元素。(提示:用小根堆) 输出 一趟堆排 ...
分类:
其他好文 时间:
2019-04-08 21:25:30
阅读次数:
198
该模块提供了堆排序算法的实现。堆是二叉树,最大堆中父节点大于或等于两个子节点,最小堆父节点小于或等于两个子节点。 创建堆 heapq有两种方式创建堆, 一种是使用一个空列表,然后使用heapq.heappush()函数把值加入堆中,另外一种就是使用heap.heapify(list)转换列表成为堆结 ...
分类:
其他好文 时间:
2019-03-18 15:20:38
阅读次数:
217
排序算法有很多种,并在实际编程过程中用的非常广泛。常用的排序算法有:插入排序算法,选择排序算法,冒泡排序算法,快速排序算法,归并排序算法,希尔排序算法,堆排序算法。
分类:
编程语言 时间:
2019-02-21 09:46:42
阅读次数:
150
算法一:快速排序算法 算法二:堆排序算法 算法三:归并排序 算法四:二分查找算法 算法五:BFPRT(线性查找算法) 算法六:DFS(深度优先搜索) 算法七:BFS(广度优先搜索) 算法八:Dijkstra算法 算法九:动态规划算法 算法十:朴素贝叶斯分类算法 算法一:快速排序算法 快速排序是由东尼 ...
分类:
编程语言 时间:
2018-11-22 00:16:30
阅读次数:
171