- 2024-11-14排序
堆排序什么是堆?从存储视角来看就是数组,逻辑视角上看是一个顺序存储的"完全二叉树",大根堆是根>=左右孩子结点,小根堆是根<=左右孩子结点。什么是堆排序?如何建堆?如何基于堆排序?堆排序算法效率分析时间复杂度排序的时间开销花费主要是两方面,一是比较二是交换,堆排序的时
- 2024-11-03【数据结构】二叉树——堆
一、二叉树的概念与结构二叉树的概念二叉树是树的一种,二叉树的特殊之处在于,每个根节点都可以有两个子节点,可以两个子节点都为空,或者一个为空,一个不为空,或者两个都有数,在构建二叉树的节点时就可以看出:现实中的二叉树:就像这颗树,每次分叉都分出两个枝条,这就是一个二叉树
- 2024-11-02【排序算法】堆排序
- 2024-09-046.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)
目录一.堆(Heap)的基本介绍二.堆的常用操作(以小根堆为例)三.实现代码3.1堆结构定义3.2向下调整算法*3.3初始化堆*3.4销毁堆3.4向上调整算法* 3.5插入数据3.6删除数据3.7返回堆顶数据四.下篇内容1.堆排序2.TopK问题一.堆(Heap)的基本介绍
- 2024-08-10堆总结(C语言)
堆总结(C语言)二叉树的顺序结构及实现堆是什么堆的分类堆的实现堆的向下调整堆的向上调整堆的应用堆排序TOP-K问题思路:堆是什么堆总是一棵完全二叉树,堆是用来存完全二叉树的,如果存普通的二叉树就会浪费空间。堆(一种二叉树)使用顺序结构的数组来存储。堆不是简单的
- 2024-07-17堆排序的前提,建堆
堆排序就是借助堆的性质来实现排序,通过建堆,然后调整可以实现对需排序数组排序。下面来具体解释:1:堆是完全二叉树,分为大根堆和小根堆,大根堆即是每个父结点大于等于左右子结点,小根堆即是每个父结点小于等子结点,下面两种图分别是一个大根堆和一个小根堆:这里的70相对于56和30就是
- 2024-06-20堆排序|维护堆和建堆
堆可以看作各个元素之前有前后续的特殊数组,当然也是一颗完全二叉树。设堆heap的元素为heap[1,2,3,...,heap_size]。注意0<=heap_size<=heap.len,并且节点从1开始计数(便于计算)。1.寻找节点1.1寻找父节点若节点编号为i