
算法
文章平均质量分 95
Dontla
这个作者很懒,什么都没留下…
展开
-
Rust字典(Rust HashMap、Rust BTreeMap)(std::collections::HashMap、std::collections::BTreeMap)哈希表桶、哈希表槽
HashMapkey的类型是&&str是因为你正在通过&map引用来遍历BTreeMap,所以每个key实际上是BTreeMap中的键()的引用,而你正在访问的是引用的引用,即&&str。通过解引用*key,你可以获取原始的&str类型。原创 2024-12-02 08:15:00 · 1324 阅读 · 0 评论 -
哈希表(Hash Table、散列表)实现原理(哈希映射HashMap、哈希函数(取余法、乘法法、加法法)、索引bucket桶、哈希冲突、链地址法、开放地址法(线性探测法)、负载因子、哈希表扩容)
线性探测法会按照桶的顺序从当前桶向后查找空位,直到找到一个空的桶为止。每当发生冲突时,哈希表会检查下一个桶,并依此类推直到找到一个空桶。实现简单:固定大小的数组便于通过哈希函数直接定位存储位置。内存管理简化:避免了动态调整数组大小的复杂性。哈希函数稳定性:哈希函数设计上要求固定大小的数组,以保证映射过程的高效性。负载因子和扩容机制:通过扩容和调整负载因子,保持哈希表在不同规模数据下的高效性能。尽管哈希表的大小在初始时是固定的,但它通过扩容机制能够动态调整,以适应更多的元素,确保哈希表操作的高效性。原创 2024-12-01 19:05:00 · 933 阅读 · 0 评论 -
算法时间复杂度和空间复杂度计算方法(O(1)、O(n)、O(logn)、O(n^2)、O(n^3 )、O(n!))分治法归并排序、主定理
时间复杂度是指随着输入规模的增加,算法所消耗的时间增长情况。时间复杂度的计算通常以输入规模nnn为变量,衡量的是最坏情况、最好情况或平均情况下的时间增长趋势。合并是通过两指针(i和j)在两个有序子数组中一次性扫描每个元素。每个元素会被比较一次并放入结果数组中,之后不再参与任何操作。合并过程中的每个元素仅被访问一次,因此时间复杂度为OnO(n)On,其中nnn是待合并的元素总数。这种设计保证了归并排序在合并阶段的时间复杂度为线性OnO(n)On,并且整体的时间复杂度是On。原创 2024-11-28 16:54:53 · 1306 阅读 · 0 评论