- 博客(9)
- 收藏
- 关注
原创 Top-k问题—详细解析(从【打开文件写出数据】到【打开文件读入数据】)
这篇文章介绍了一个使用C语言实现的Top-K算法,主要分为两个步骤: 数据生成: 通过CreateData()函数生成100万个随机数据并写入文件。 每个数据由随机数生成器产生,并加入索引值增强随机性。 Top-K查找: 通过FindTopk()函数实现: 读取用户指定的K值 从文件中读取前K个数据建立小根堆 逐个比较剩余数据与堆顶,保留较大的元素 最终通过堆排序输出最大的K个元素 该算法时间复杂度为O(NlogK),适用于【海量数据中查找前K大元素】。
2026-01-04 10:34:11
200
原创 从【向上调整,向下调整】到【堆排序】
一.主要包括向上调整和向下调整两种建堆方式。 对于升序排序,需要先建立大堆; 对于降序排序,则需要先建立小堆。二.文章详细展示了两种调整方式的代码实现,并说明了如何通过交换堆顶和堆底元素进行排序。 【无论是升序还是降序,最终都使用向下调整来完成堆排序】
2025-12-29 19:30:18
323
1
原创 用两个队列_实现栈
本文介绍了如何使用链表实现队列结构以及用两个队列模拟栈操作。队列实现部分包括初始化、入队、出队、判空、获取大小、获取头尾元素和销毁队列等操作。栈模拟部分重点展示了入栈和出栈的实现原理:入栈时数据进入非空队列,出栈时将非空队列元素转移到空队列直到只剩一个元素,该元素即为栈顶元素。这种实现方式利用了队列先进先出(FIFO)的特性来模拟栈后进先出(LIFO)的行为。
2025-12-13 21:18:28
175
原创 环形链表的详解
本文探讨了链表环检测的两种方法: 1)使用快慢指针判断链表是否有环,分析了不同步长下的相遇条件; 2)找到环的起始节点。推导表明,当快指针步长为2时总能相遇,而步长为3时需满足特定奇偶 条件。第二种方法通过相遇点和头指针同步移动,数学推导证明最终相遇点即为环的起始位置。文中提供了C语言实现代码,并通过图示和公式详细证明了算法的正确性。
2025-11-26 18:55:59
850
原创 移除元素_双指针法_详细拆解
本文描述了一个移除数组中指定元素(数值为4)的算法实现。 使用双指针方法:destination指针记录非目标元素的位置,threshould指针遍历数组。 当遇到目标值时跳过,否则将元素复制到destination位置。 最终destination的值即为新数组长度(示例中结果为3)。 算法时间复杂度O(n),空间复杂度O(1),通过原地修改数组高效移除了所有指定元素。
2025-11-14 20:19:15
856
原创 字符串中空格的替换
本文介绍了如何在C语言中将字符串中的空格替换为"%20"首先需要将目标字符串存入字符数组并计算长度,然后创建一个替换函数。该函数会统计空格数量,并计算替换后所需的新长度。替换过程从字符串末尾开始操作:若非空格则直接复制字符,若遇到空格则逆序存入'%'、'2'、'0'三个字符。 整个过程在原数组中进行,通过双指针法实现高效替换,最终输出更新后的字符串。这种方法避免了额外空间的使用,直接在原数组上完成修改。
2025-08-14 15:37:29
177
原创 三子棋代码的详细梳理(C语言实现)
本文展示了一个简单的三子棋游戏实现,包含三个文件:test.c(主程序逻辑)、game.c(游戏功能实现)和game.h(头文件声明)。test.c负责菜单显示和游戏流程控制,game.c实现了棋盘初始化、显示、玩家和电脑下棋逻辑以及胜负判断,game.h定义了棋盘的宏和函数声明。玩家和电脑轮流下棋,游戏能自动判断胜负或平局,并显示最终结果。代码通过模块化设计实现了三子棋的基本功能,包括随机数生成、输入验证和棋盘状态检测等。
2025-06-02 16:58:48
223
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅