- 博客(9)
- 收藏
- 关注
原创 算法学习第三天 【快速排序】
这是一种通用、直观、广泛流传的快速排序实现,适合大多数情况。虽然在大量重复元素下不如三路快排高效,但代码简洁,易于理解和教学。选择最左侧元素作为 pivot,使用两个指针left和rightright从右向左找第一个小于 pivot 的元素left从左向右找第一个大于 pivot 的元素找到后交换两者位置直到循环结束后,left(或right)指向的位置就是 pivot 的最终位置。将nums[left]与nums[low](原始 pivot)交换,完成分区。随后递归处理left。
2025-07-30 20:11:54
806
原创 算法学习第一天 【选择排序、冒泡排序、插入排序、异或】
现在我们有一个数组6,5,4,3,2,1,我们需要将数组从小到大进行排序在这里我们使用冒泡排序(就像泡泡一样,大的泡泡会沉底 - 应该是!!!首先进行第一轮排序,下标为0 和下标为1 的数进行比较,如果前者大于后者,那么两者交换顺序,否则进行下两个数的比较,最终第一轮结束之后,数组为:5,4,3,2,1,6进行第二轮排序,下标为0 和下标为 1的数进行比较,……,(不需要比较已经排好了的数据),第二轮结束,数组为:4,3,2,1,5,6第三轮排序,……,第三轮结束,数组为:3,2,1,4,5,6。
2025-07-27 00:10:04
840
原创 栈和队列的优缺点以及代码实现
在头插法中,每次入栈的新元素都被插入到链表的头部,也就是紧接在头节点之后。这样,当指针移动到数组末尾时,可以“绕回”数组开头继续使用空间,从而避免了传统顺序队列中出现的“假溢出”问题。后进先出(Last In First Out):最后被添加的元素,最先被移除。在尾插法中,新元素被插入到链表的末尾,因此栈顶位于链表的尾部。此外,由于循环队列在实现上不易处理动态扩容逻辑,通常。,可以在入队和出队时分别对这两个指针进行移动操作。在使用动态数组实现队列时,推荐将队列设计为一个。,以保证队列操作的高效与稳定。
2025-07-13 01:39:53
855
原创 动态数组和链表优缺点以及代码实现(C语言)
内存不连续:链表的节点在内存中是离散分布的,不需要像动态数组那样占用一块连续的空间。无需扩容:由于每个节点都是独立分配的,因此链表不需要扩容操作。依赖动态内存管理:链表中的每个节点都需要通过malloc或类似方式动态申请内。
2025-07-11 20:07:11
741
原创 C语言 客户信息管理系统
前提介绍:系统在添加客户的时候,自动为客户赋值对应的编号如果在删除的时候,自动将剩余的客户编号按照从小到大的顺序排列创建一个全局变量的id,方便接下来为客户赋值IDcapacity用于确定当前系统最大可存储的客户数量,count用于判断当前已经存储的客户的数量。给客户的结构体指针数组,动态分配内存(free( )函数在退出系统里写了,所以不会造成内存泄漏)展示菜单界面 --->传入当前的客户结构体指针数组以及当前存储用户数量的指针。
2025-07-08 20:14:57
836
原创 C语言打印 空心金字塔
思路:首先分析题目,需要我们打印的金字塔,第一层打印 1 个*,最后一层打印(2*层数-1)个*,初次之外,其他每层打印 2 个*。题目:函数可以没有返回值案例,编写一个函数,从终端输入一个整数打印出对应的金字塔,函数可以传入金字塔层数。我们只需要将第一层和最后一层单独考虑,其他层总结规律即可。
2025-06-27 22:52:50
130
原创 C语言编译器 MinGW的介绍和使用指南
MinGW(Minimalist GNU for Windows)是 GCC(GNU Compiler Collection)在 Windows 平台上的一个移植版本。它允许开发者在 Windows 操作系统上编译生成本地的 C/C++ 可执行程序。MinGW 提供了一套完整的开发工具链,包括 C 编译器(gcc)、C++ 编译器(g++)、链接器、调试器等,非常适合用于 Windows 下的原生 C/C++ 开发。
2025-06-18 17:51:41
1087
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人