堆是一种特别的完全二叉树。分为大根堆(大堆)和小根堆(小堆)。在小根堆中,所有父节点的值都小于或等于其子节点;而在大根堆中,所有父节点的值都大于或...
给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
事实上,我们在制作一个大型项目时,会用到无数个小的函数,每一个小的函数都是一块小的乐高积木零部件,当它们相互拼接,互相协作,就能组成精致的模型。编程项目也是一样...
我们为什么需要环形缓冲(循环队列)?实际上,我们不妨先审视普通数组队列的局限性。正是这些缺陷,催生了环形缓冲这一高效、紧凑的数据结构。
3,bomb数组负责安放炸弹,show数组负责显示数字,在后续函数变量设置方面作用巨大。
这一通过一个简单的,能够指定大小的数组模板来进行说明。有两种方式来实现这个数组模板:
vector在日常的使用非常广泛,我们应该熟悉它的常用接口。接下来我们从基础的接口开始,学会它的使用及模拟实现。
归并排序是稳定的排序,因为在合并两个有序子数组时,如果遇到两个相等的元素(一个在左边子数组,一个在右边子数组),标准实现会优先取左边子数组的元素放入结果集。
基于向上调整算法的思想,我们可以对任何一个数组进行建堆(大堆或小堆),通过循环,传入数组中的每个元素,及其下标,相当于对数组中的每个元素进行向上调整,即完成了建...
②创建计数数组:创建一个长度为 range 的计数数组 count,用于存储输入数组 a 中每个元素的出现次数。
非递归实现归并排序,通常被称为 “自底向上”(Bottom-Up) 的归并排序,与递归版本(先将数组对半拆分直到只剩一个元素,再通过递...
合(Merge): 将两个已排序的子数组归并成一个更大的有序数组,重复这个过程,直到所有子数组都归并成一个完整的有序数组。
递归的深度是有限制的。如果数组极其巨大,或者处于最坏情况(比如倒序数组排成正序),递归层数太深会导致程序崩溃。
快速排序的精妙之处在于无需申请额外数组空间(避免内存浪费),而是直接在原数组中进行元素交换。
3.此时gap增量缩小,以gap=2为增量对数组进行分组,数组将被分成2份,每组之间都是2的等差数列
插入排序(Insertion Sort)是一种简单直观的排序算法。它的基本思想是:将数组分为已排序区间和未排序区间,逐步从未排序区间取出元素并插入到已排序区间的...
选择排序(Selection Sort)是一种基础的排序算法,其核心思路是:在每一轮遍历中,从剩余未排序元素中选出最小(或最大)值,并将其放置在已排序序列的末...
冒泡排序(Bubble Sort)是一种简单直观的排序算法。其核心原理是通过相邻元素的反复比较和交换,使较大元素逐渐"上浮"到序列末端,较小元素自然"下沉"到...
根据完全二叉树的特点:叶子节点只出现在最下面两层,且最下层的叶子节点都集中在左侧。得益于这种连续排列的特性,我们可以用数组来存储完全二叉树,从而形成一种新的数据...