- 博客(7)
- 资源 (5)
- 收藏
- 关注
原创 codeforces等OJ代码模版
逐部分解析一下算法常用头文件和使用命名空间,这里不用多说算法常用头文件和使用命名空间,这里不用多说这个类模板实现了一个递归函数的固定点组合子(Y 组合子),用于实现递归匿名函数。这个函数模板用于创建 类的实例。重载了 类型的输出运算符,使得 类型可以通过 进行输出。重载了非 类型容器的输出运算符,使得容器类型可以通过 进行输出。这些函数用于调试输出。定义了一个调试宏 ,用于条件性地输出调试信息。这个宏在调试模式下会输出参数的名字及其值,而在非调试模式下不会产生任何输出。 和
2024-07-13 00:59:05
2029
原创 C语言结构体速览
结构体(struct)是C语言中的一种数据结构,它允许我们将不同类型的数据组合在一起,形成一个新的数据类型。结构体的使用使得数据的组织更加灵活和方便,特别是在处理复杂数据时。struct 结构体名 {数据类型 成员名1;数据类型 成员名2;// 其他成员int id;float gpa;结构体在C语言中是一个非常重要的工具,通过将不同类型的数据组合在一起,它为我们提供了更加灵活和方便的数据组织方式。无论是在简单的程序中还是在复杂的项目中,结构体的使用都能够显著提高代码的可读性和维护性。
2024-05-31 09:20:39
388
原创 C语言qsort,C++sort详解及对比
可以通过提供自定义比较函数来实现自定义排序规则。// 使用 std::sort 进行排序,并指定自定义比较函数// 输出排序后的数组return 0;语言适用性qsort适用于 C 语言,而std::sort专为 C++ 设计,充分利用了模板和迭代器的优势。类型安全性std::sort提供了更好的类型安全性和编译时检查。性能std::sort通常性能更好,特别是在排序复杂数据类型时。灵活性和可扩展性std::sort更加灵活,支持自定义比较函数,使用方便。在 C++ 开发中,
2024-05-30 20:28:50
916
原创 C语言链表详解
动态分配内存:节点可以在运行时动态分配和释放,不需要提前知道数据的数量。插入和删除操作高效:在链表中插入或删除一个节点只需要修改指针,效率较高。随机访问不便:由于链表是线性存储结构,访问某个特定位置的节点需要从头开始遍历。int data;} Node;
2024-05-30 10:36:47
784
原创 如何解决Hash冲突
常见的开放地址法有线性探测(Linear Probing)、二次探测(Quadratic Probing)和双重哈希(Double Hashing)。这是最常用的解决哈希冲突的方法之一。当发生冲突时,使用一个新的哈希函数重新计算哈希值,直到找到一个空槽。在哈希表中,哈希冲突是指不同的键通过哈希函数映射到相同的索引位置。每种解决哈希冲突的方法都有其优点和适用场景,选择哪种方法取决于具体的应用需求和数据分布情况。将所有冲突的元素存储在一个单独的溢出区,当主哈希表发生冲突时,元素被移动到溢出区。
2024-05-30 08:57:07
761
原创 红黑树的结构
红黑树(Red-Black Tree)是一种自平衡的二叉查找树(Binary Search Tree,简称BST),它通过在每个节点上增加一个存储位表示节点的颜色(红色或黑色),从而在插入和删除操作时进行适当的调整以保持树的平衡。红黑树的结构和性质使得它在最坏情况下的时间复杂度仍然是 O(log n),因此在很多实际应用中都非常高效。红黑树的插入和删除操作相对复杂,需要通过旋转(Rotation)和重新着色(Recoloring)来保持树的平衡。
2024-05-30 08:56:04
402
原创 Java HashMap底层实现原理
中的元素都被封装在一个节点对象中。在Java 8及以后的版本中,如果链表长度超过一定阈值(默认是8),链表会转换为红黑树,以提高查找效率。当两个键的哈希码相同时,它们会被存储到相同的桶中,此时通过链表来解决冲突。链表的插入时间复杂度为O(1),查找时间复杂度为O(n),而红黑树的查找时间复杂度为O(log n)。会进行扩容(resize),即将数组容量扩大为原来的两倍,并重新计算每个键的哈希值并重新分配到新的数组位置(再哈希rehash)。的基本工作原理,包括哈希函数的计算、链表的处理以及简单的扩容机制。
2024-05-30 08:52:59
449
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人