首页
学习
活动
专区
圈层
工具
发布

#数组

从零开始手搓堆:核心操作实现 + 堆排序 + TopK 算法+ 向上调整 vs 向下调整建堆的时间复杂度严密证明!

小此方

堆是一种特别的完全二叉树。分为大根堆(大堆)和小根堆(小堆)。在小根堆中,所有父节点的值都小于或等于其子节点;而在大根堆中,所有父节点的值都大于或...

2000

轮转数组——深度解剖逆转算法的奥秘

小此方

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

1500

求日数项目和嵌套调用

小此方

事实上,我们在制作一个大型项目时,会用到无数个小的函数,每一个小的函数都是一块小的乐高积木零部件,当它们相互拼接,互相协作,就能组成精致的模型。编程项目也是一样...

2000

从零开始打造高性能数据结构——手把手教你实现环形缓冲

小此方

我们为什么需要环形缓冲(循环队列)?实际上,我们不妨先审视普通数组队列的局限性。正是这些缺陷,催生了环形缓冲这一高效、紧凑的数据结构。

1600

C语言扫雷教程——真保姆级

小此方

3,bomb数组负责安放炸弹,show数组负责显示数字,在后续函数变量设置方面作用巨大。

700

【C++】Template:深入理解特化与分离编译,破解编译难题

小陈又菜

这一通过一个简单的,能够指定大小的数组模板来进行说明。有两种方式来实现这个数组模板:

2900

【C++】STL--Vector使用及其模拟实现

小陈又菜

vector在日常的使用非常广泛,我们应该熟悉它的常用接口。接下来我们从基础的接口开始,学会它的使用及模拟实现。

3700

排序算法总结:稳定与性能分析

用户11957406

归并排序是稳定的排序,因为在合并两个有序子数组时,如果遇到两个相等的元素(一个在左边子数组,一个在右边子数组),标准实现会优先取左边子数组的元素放入结果集。

1400

排序算法指南:堆排序

用户11957406

基于向上调整算法的思想,我们可以对任何一个数组进行建堆(大堆或小堆),通过循环,传入数组中的每个元素,及其下标,相当于对数组中的每个元素进行向上调整,即完成了建...

3400

排序算法指南:计数排序

用户11957406

②创建计数数组:创建一个长度为 range 的计数数组 count,用于存储输入数组 a 中每个元素的出现次数。

2400

排序算法指南:归并排序(非递归)

用户11957406

非递归实现归并排序,通常被称为 “自底向上”(Bottom-Up) 的归并排序,与递归版本(先将数组对半拆分直到只剩一个元素,再通过递...

2400

排序算法指南:归并排序

用户11957406

合(Merge): 将两个已排序的子数组归并成一个更大的有序数组,重复这个过程,直到所有子数组都归并成一个完整的有序数组。

2300

排序算法指南:快速排序(非递归)

用户11957406

递归的深度是有限制的。如果数组极其巨大,或者处于最坏情况(比如倒序数组排成正序),递归层数太深会导致程序崩溃。

1100

排序算法指南:快速排序

用户11957406

快速排序的精妙之处在于无需申请额外数组空间(避免内存浪费),而是直接在原数组中进行元素交换。

4200

排序算法指南:希尔排序

用户11957406

3.此时gap增量缩小,以gap=2为增量对数组进行分组,数组将被分成2份,每组之间都是2的等差数列

3900

排序算法指南:插入排序

用户11957406

插入排序(Insertion Sort)是一种简单直观的排序算法。它的基本思想是:将数组分为已排序区间和未排序区间,逐步从未排序区间取出元素并插入到已排序区间的...

1300

排序算法指南:选择排序

用户11957406

选择排序(Selection Sort)是一种基础的排序算法,其核心思路是:在每一轮遍历中,从剩余未排序元素中选出最小(或最大)值,并将其放置在已排序序列的末...

2600

排序算法指南:冒泡排序

用户11957406

冒泡排序(Bubble Sort)是一种简单直观的排序算法。其核心原理是通过相邻元素的反复比较和交换,使较大元素逐渐"上浮"到序列末端,较小元素自然"下沉"到...

2600

堆应用一键通关: 堆排序 +TOPk问题的实战解析

用户11957406

基于向上调整算法的思想,我们可以对任何一个数组进行建堆(大堆或小堆),通过循环,传入数组中的每个元素,及其下标,相当于对数组中的每个元素进行向上调整,即完成了建...

1700

从数组到堆:完全二叉树的 “顺序存储” 实现秘籍

用户11957406

根据完全二叉树的特点:叶子节点只出现在最下面两层,且最下层的叶子节点都集中在左侧。得益于这种连续排列的特性,我们可以用数组来存储完全二叉树,从而形成一种新的数据...

3700
领券