- 博客(16)
- 收藏
- 关注
原创 单链表启蒙+运行结果
在位置2插入元素后: [D, A, E, B, C]删除位置1的元素后: [D, E, B, C]添加头部元素后: [D, A, B, C]链表内容: [A, B, C]是否包含元素C: true。清空后是否为空: true。
2025-05-20 23:05:24
224
原创 桶排序启蒙(代码+示例)
buckets [2] 排序后:[0.32, 0.33, 0.37, 0.42]适用场景:元素值分布均匀、范围已知(如 [0, 1) 区间的浮点数)。buckets [3] 排序后:[0.47, 0.51, 0.52]元素 n * 元素 桶索引 所属桶。合并结果:按顺序合并所有桶的元素,得到有序数组。划分桶:将数组元素按值范围分配到不同的桶中。桶内排序:对每个桶内的元素单独排序。分配元素到桶:(i=0)
2025-05-19 21:39:13
242
原创 二分查找启蒙代码(解释+实例)
nums = [2, 5, 8, 12, 16, 23, 38, 56, 72, 91](升序排列),目标值 target = 23。比较:23 < 56 → 更新 high = mid - 1 = 6。比较:23 > 16 → 更新 low = mid + 1 = 5。比较:23 == 23 → 返回 mid = 5。
2025-05-19 17:34:15
238
原创 顺序表按值按位查找启蒙
参数 i 表示要查找的位序(从 1 开始)遍历数组,找到第一个匹配的值,返回其位序。构造函数:初始化顺序表,指定最大容量。值为 30 的元素在第 3 个位置。用于向顺序表中插入元素,辅助测试用。maxSize:顺序表的最大容量。第 2 个位置的元素是: 20。length:当前顺序表的长度。将插入位置后的元素依次后移。data:存储数据的数组。参数 e 表示要查找的值。检查插入位置是否合法。插入新元素,更新长度。
2025-05-18 21:58:51
158
原创 Leetcode删除有序数组的重复项栈法
/ 长度正确的期望答案。不需要考虑数组中超出新长度后面的元素。如果所有断言都通过,那么您的题解将被。不需要考虑数组中超出新长度后面的元素。,返回删除后数组的新长度。删除重复出现的元素,使每个元素。函数应该返回新的长度。的前两个元素被修改为。函数应该返回新的长度。的前五个元素被修改为。
2025-05-17 23:37:08
206
原创 初识顺序表启蒙+代码运行
在位置1插入D后: [A, D, B, C]删除位置2的元素后: [A, D, C]顺序表内容: [A, B, C]是否包含元素C: true。清空后是否为空: true。元素B的位置: -1。
2025-05-17 23:34:31
170
原创 堆排序启蒙(分析+解释)
交换与调整 i=4(交换 9 和 4,调整堆) [8, 6, 4, 5, 9] 最大值 9 移至末尾。此时父节点变为索引 2(值 4),子节点为索引 5(超出范围,无),调整结束。此时父节点变为索引 1(值 5),子节点为索引 3(超出范围,无),调整结束。子节点:左子节点索引 5(超出范围,无),右子节点索引 6(超出范围,无)子节点:左子节点索引 1(值 5),右子节点索引 2(超出范围,无)子节点:左子节点索引 3(值 5),右子节点索引 4(值 9)
2025-05-15 21:45:42
1840
原创 基数排序启蒙(解释+例子)
排序前: [170, 45, 75, 90, 802, 24, 2, 66]排序后: [170, 90, 802, 2, 24, 45, 75, 66]排序前: [170, 90, 802, 2, 24, 45, 75, 66]排序后: [802, 2, 24, 45, 66, 170, 75, 90]排序前: [802, 2, 24, 45, 66, 170, 75, 90]排序后: [2, 24, 45, 66, 75, 90, 170, 802]分解数位:将每个元素按位分解(如个位、十位、百位等)。
2025-05-14 22:49:12
244
原创 计数排序启蒙(代码解释+具体示例)
/ 初始状态:[0, 0, 0, 0, 0, 0]// 初始化输出数组。c[1] = 3:表示 1 在输出数组中的最后位置是索引 2(3-1=2)。// 原数组 A = [4, 1, 3, 1, 0, 2, 5]c[A[i]]--;c[2] = 4 → c[2]-- 后变为 3。c[0] = 1 → c[0]-- 后变为 0。c[1] = 3 → c[1]-- 后变为 2。c[3] = 5 → c[3]-- 后变为 4。c[1] = 2 → c[1]-- 后变为 1。
2025-05-13 22:50:44
288
原创 归并排序算法启蒙(详细解释+具体实例)
merge(0, 2, 5) → 合并 [1, 2, 3] 和 [4, 5, 6] → 最终结果:[1, 2, 3, 4, 5, 6]merge(0, 1, 2) → 合并 [1, 3] 和 [2] → 结果:[1, 2, 3]merge(3, 4, 5) → 合并 [4, 6] 和 [5] → 结果:[4, 5, 6]merge(3, 3, 4) → 合并 [4] 和 [6] → 结果:[4, 6]剩余 4, 5, 6,结果:[1, 2, 3, 4, 5, 6]
2025-05-12 17:38:43
719
原创 快速排序算法启蒙(代码解释+具体解释)
结束将基准元素放到正确位置,将基准元素 arr[low] 与 arr[highn] 交换。arr[6] = 8 > 5 → highn--(指向 7)arr[5] = 7 > 5 → highn--(指向 6)arr[4] = 6 > 5 → highn--(指向 4)arr[3] = 4 ≤ 5 → lown++(指向 6)最终分区结果:[4, 3, 2, 5, 6, 7, 8]。初始化数组创建待排序数组 {5,3,8,4,6,7,2}最终排序结果[2, 3, 4, 5, 6, 7, 8]
2025-05-11 19:57:40
521
原创 希尔排序算法启蒙(详细解释+具体示例)
j = 3,比较 arr[2] = 4 vs temp = 3 → 4 > 3,执行 arr[3] = arr[2]。比较 arr[0] = 3 和 temp = 1,发现 3 > 1,将 3 后移到位置 3。j = 1,比较 arr[0] = 1 vs temp = 2 → 1 < 2,循环终止。j = 2,比较 arr[1] = 2 vs temp = 4 → 2 < 4,循环终止。j = 2,比较 arr[1] = 2 vs temp = 3 → 2 < 3,循环终止。
2025-05-10 14:24:03
587
原创 插入排序算法启蒙(详细解释+具体示例)
外层循环,从数组的第二个元素(索引为 1)开始遍历,因为第一个元素可以看作是已经排好序的。,将 9 后移一位,数组变为。,将 9 后移一位,数组变为。,将 9 后移一位,数组变为。,将 7 后移一位,数组变为。,将 5 后移一位,数组变为。,将 9 后移一位,数组变为。,将 7 后移一位,数组变为。,将 5 后移一位,数组变为。,将 9 后移一位,数组变为。,将 9 后移一位,数组变为。,将 8 后移一位,数组变为。,将 7 后移一位,数组变为。,将 5 后移一位,数组变为。
2025-05-09 15:40:39
1742
1
原创 冒泡排序算法启蒙(详细解释)
最后,内层循环结束后,检查swapped的值,仍然为false,说明这一轮没有发生元素交换,数组已经有序,使用 break 语句提前结束外层循环。外层循环,控制当前待排序的起始位置(n-1是因为每一轮排序都会将一个最大的元素 “冒泡” 到数组的末尾故最后一个元素时无需比较。内层循环,比较相邻元素(n-i-1 是为了避免对已经排好序的元素进行重复比较,因为每一轮排序后,末尾的i个元素已经是有序的。将下一个元素arr[j+1]的值赋给当前元素arr[j]使用临时变量temp存储当前元素arr[j]的值。
2025-05-08 18:52:34
391
原创 直接选择排序算法启蒙(详细解释)
内层循环,从当前位置 i 的下一个位置开始遍历数组(i+1是避免对已经确定位置的元素重复比较。如果当前遍历到的元素 arr[j] 小于假设的最小值 arr[min],就改变原本索引i。外层循环,控制当前待排序的起始位置(n-1是因为数组中只剩下最后一个元素时它必然是有序的。对一个整数数组进行从小到大排序,然后将排序后的数组元素依次打印输出。假设当前位置 i 的元素为最小值,将其索引赋值给 min。使用临时变量 temp 存储当前待排序位置 i 的元素。将原来位置 i 的元素放到最小值所在的位置 min。
2025-05-07 23:36:34
461
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人