08 2024 档案

摘要:改造红黑树 目录改造红黑树适配STL迭代器的红黑树基本结构RBTreeNode__RBTree_iteratorRBTree完整代码封装的set封装的map 在初次看STL中实现红黑树的源码时有些不理解,然后自己尝试对set以RBTree<K,K>的方式封装红黑树的迭代器;实现过程发现,这样封装复用 阅读全文
posted @ 2024-08-31 20:54 HJfjfK 阅读(324) 评论(0) 推荐(2)
摘要:目录红黑树简述性质/规则主要规则:推导性质:红黑树的基本实现struct RBTreeNodeclass RBTree红黑树的插入红黑树插入修正前言什么时候需要变色:变色的基础:为什么需要旋转与变色变色:旋转需要修正的所有情况(以左为例)先认识最简单的情况1. 叔叔是红色结点注意:2.没有叔叔结点3 阅读全文
posted @ 2024-08-26 22:54 HJfjfK 阅读(429) 评论(0) 推荐(1)
摘要:目录基本概念关联式容器键值对树形结构的关联式容器set描述set的使用map描述map的使用multiset描述multiset简单使用multimap描述底层结构 基本概念 关联式容器 在初阶阶段,我们已经接触过STL中的部分容器,比如:vector、list、deque、 forward_lis 阅读全文
posted @ 2024-08-23 18:00 HJfjfK 阅读(224) 评论(0) 推荐(0)
摘要:4种旋转操方法,6种双旋平衡因子特征,图文详解,一把到位 阅读全文
posted @ 2024-08-23 16:34 HJfjfK 阅读(1075) 评论(0) 推荐(4)
摘要:目录排序的概念内外部排序稳定与非稳定排序改进排序的指标图片 排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[ 阅读全文
posted @ 2024-08-21 08:00 HJfjfK 阅读(87) 评论(0) 推荐(0)
摘要:目录二叉搜索树基本概念常用结论用途二叉搜索树的性能分析二叉搜索树的操作查找插入删除代码实现BSTree.hpptest.cc 二叉搜索树 基本概念 二叉搜索树(BST,Binary Search Tree) 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为空 阅读全文
posted @ 2024-08-20 23:44 HJfjfK 阅读(365) 评论(0) 推荐(2)
摘要:高精度计时器,时间精度可以达到1纳秒. 随机数生成器,可以实现各类随机数,本测试主要用于实现9成随机数下排序性能. 阅读全文
posted @ 2024-08-20 23:39 HJfjfK 阅读(137) 评论(0) 推荐(0)
摘要:目录基数排序实现原理基本步骤效率分析代码实现sortmain 基数排序 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排 阅读全文
posted @ 2024-08-19 17:17 HJfjfK 阅读(244) 评论(0) 推荐(0)
摘要:目录输入/输出操纵符简单示例输入操纵符(Input Manipulators)输出操纵符(Output Manipulators)组合使用 输入/输出操纵符 输入输出操纵符是 C++ 中用于控制输入输出流格式的一组特殊函数或对象。它们通常用于格式化输出,例如设置宽度、精度、对齐方式等,而不涉及数据的 阅读全文
posted @ 2024-08-15 13:08 HJfjfK 阅读(276) 评论(0) 推荐(0)
摘要:算法库 -堆操作 基本操作 make_heap() (1)从一个元素范围创建出一个最大堆 (2)将区间内的元素转化为heap.--传比较器 push_heap() 对heap增加一个元素.将一个元素加入到一个最大堆 pop_heap() 对heap取出下一个元素.从最大堆中移除最大元素 sort_h 阅读全文
posted @ 2024-08-13 20:02 HJfjfK 阅读(154) 评论(0) 推荐(0)
摘要:目录内观排序/内省排序Introsort 的工作原理:总结:内省排序中的堆排序作用在 Introsort 中的具体作用:如何在 Introsort 中使用堆排序:示例代码中的堆排序部分:内省排序中插入排序(小区间优化)部分插入排序的工作原理:Introsort 中插入排序的使用:内省排序算法执行流程 阅读全文
posted @ 2024-08-12 11:33 HJfjfK 阅读(780) 评论(0) 推荐(1)
摘要:目录IP地址概念IP地址2A类地址B类地址C类地址D类地址E类地址特殊IP地址0.0.0.0三类私网地址默认网关默认子网掩码IP地址的分类广播地址主机号网络地址网络地址的确定示例计算网络地址步骤计算过程网络地址的含义CIDR表示法CIDR表示法的组成部分:示例 IP地址概念 分类: A类:000~1 阅读全文
posted @ 2024-08-11 22:44 HJfjfK 阅读(1142) 评论(0) 推荐(0)
摘要:目录归并排序用途特性null优点与其他排序算法比较的优点缺点算法步骤递归实现时间/空间复杂度分析非递归实现归并与快排的区别 归并排序 归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序 阅读全文
posted @ 2024-08-06 22:59 HJfjfK 阅读(483) 评论(0) 推荐(1)
摘要:目录希尔排序概述优缺点算法步骤代码实现 希尔排序 概述 希尔排序,也称递减增量排序算法,也称缩小增量排序,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率; 阅读全文
posted @ 2024-08-06 21:50 HJfjfK 阅读(421) 评论(0) 推荐(1)
摘要:目录快速排序快速排序要解决的几个问题算法步骤递归法空间复杂度: log2(n)1. hoare法基本原理时间复杂度分析代码实现1优化一 三数取中代码实现逻辑测试三数取中优化版本快排优化二 小区间优化代码实现测试2. 挖坑法3. 前后指针法4. 三路排序算法背景概念适用说明实现思路代码实现非递归版本为 阅读全文
posted @ 2024-08-06 20:48 HJfjfK 阅读(1061) 评论(0) 推荐(1)
摘要:目录堆排序堆排序的好处:算法步骤代码实现时间复杂度分析记忆技巧: 堆排序 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。分 阅读全文
posted @ 2024-08-06 19:03 HJfjfK 阅读(265) 评论(0) 推荐(1)
摘要:目录直接选择排序描述选择排序的缺点:算法步骤代码实现 直接选择排序 描述 选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了。 选择排序的缺点: 效率低下:选择排序的时间复杂度始终是 𝑂(� 阅读全文
posted @ 2024-08-06 18:02 HJfjfK 阅读(275) 评论(0) 推荐(1)
摘要:目录冒泡排序描述冒泡排序的缺点:什么时候最快什么时候最慢特点评价:代码实现 冒泡排序 描述 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经 阅读全文
posted @ 2024-08-06 17:01 HJfjfK 阅读(427) 评论(0) 推荐(1)
摘要:目录插入排序描述应用分析时间复杂度空间复杂度算法步骤代码实现 插入排序 描述 插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外 阅读全文
posted @ 2024-08-06 16:00 HJfjfK 阅读(290) 评论(0) 推荐(1)
摘要:队列 队列的概念 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的特点FIFO(First In First Out) 入队:进行插入操作的一端称为队尾 出队:进行删除操作的一端称为队头 链实栈代码实现 Ququq.h #pragma once #defi 阅读全文
posted @ 2024-08-06 13:05 HJfjfK 阅读(120) 评论(0) 推荐(0)
摘要:栈 栈的概念 一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。 出栈:栈的删除操作叫做出栈。出 阅读全文
posted @ 2024-08-06 12:04 HJfjfK 阅读(124) 评论(0) 推荐(0)
摘要:目录队列队列的概念链实栈代码实现Ququq.hQueue.c 队列 队列的概念 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的特点FIFO(First In First Out) 入队:进行插入操作的一端称为队尾 出队:进行删除操作的一端称为队头 链实栈 阅读全文
posted @ 2024-08-06 11:03 HJfjfK 阅读(255) 评论(0) 推荐(0)
摘要:目录栈栈的概念顺序栈代码实现Stack.hStack.c 栈 栈的概念 一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈:栈的插入操作叫做进栈/ 阅读全文
posted @ 2024-08-06 10:02 HJfjfK 阅读(128) 评论(0) 推荐(0)
摘要:目录顺序表概念代码实现动态顺序表SeqLish.hSeqList.c线性表区分 顺序表 概念 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存 储。在数组上完成数据的增删查改。 顺序表一般可以分为: 静态顺序表:使用定长数组存储元素。 动态顺序表:使用动态开辟的数 阅读全文
posted @ 2024-08-06 09:01 HJfjfK 阅读(99) 评论(0) 推荐(0)
摘要:目录链表链表的概念链表的分类代码实现无头单向非循环链表SingleLink.hSingleLink.c带头双向循环链表DoubleLink.hDoubleLink.cnull 链表 链表的概念 链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。 阅读全文
posted @ 2024-08-06 08:00 HJfjfK 阅读(139) 评论(0) 推荐(0)
摘要:目录一、树概念及结构树的概念树的相关概念树的表示二、二叉树概念及结构概念特殊的二叉树二叉树的性质二叉树的存储结构三、二叉树的顺序结构及实现二叉树的顺序结构堆的概念及结构堆的作用:堆的性质:计算孩子与父亲的下标关系1. 通过父亲得到左右孩子的下标2. 通过孩子找到父亲的下标如何得知自己是左孩子还是右孩 阅读全文
posted @ 2024-08-05 22:17 HJfjfK 阅读(646) 评论(0) 推荐(0)
摘要:内存拷贝 - memcpy 描述 C 库函数 void *memcpy(void *str1, const void *str2, size_t n) 从存储区 str2 复制 n 个字节到存储区 str1。 memcpy 是最快的内存到内存复制子程序。 它通常比必须扫描其所复制数据的strcpy 阅读全文
posted @ 2024-08-05 22:05 HJfjfK 阅读(192) 评论(0) 推荐(0)
摘要:# 字符串长度 - strlen() 描述 C 库函数 size_t strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。 声明 下面是 strlen() 函数的声明。 size_t strlen(const char *str) 参数 s 阅读全文
posted @ 2024-08-05 20:23 HJfjfK 阅读(149) 评论(0) 推荐(0)
摘要:strcat 描述 char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。 声明 下面是 strcat() 函数的声明。 char *strcat(char *dest, const char *src) 阅读全文
posted @ 2024-08-05 15:04 HJfjfK 阅读(93) 评论(0) 推荐(0)
摘要:memset() 描述 C 库函数 void *memset(void *str, int c, size_t n) 用于将一段内存区域设置为指定的值。 memset() 函数将指定的值 c 复制到 str 所指向的内存区域的前 n 个字节中,这可以用于将内存块清零或设置为特定值。 在一些情况下,需 阅读全文
posted @ 2024-08-05 14:03 HJfjfK 阅读(137) 评论(0) 推荐(0)
摘要:C 库函数 - strcmp() 描述 C 库函数 int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。 声明 下面是 strcmp() 函数的声明。 int strcmp(const cha 阅读全文
posted @ 2024-08-05 13:02 HJfjfK 阅读(122) 评论(0) 推荐(0)
摘要:内存移动 - memmove 也是拷贝函数,源字符串可能会被覆盖,但保证目标是想要的 描述 C 库函数 void *memmove(void *str1, const void *str2, size_t n) 从 str2 复制 n 个字符到 str1,但是在重叠内存块这方面,memmove() 阅读全文
posted @ 2024-08-05 10:00 HJfjfK 阅读(114) 评论(2) 推荐(0)
摘要:C 库函数 - strcpy() 目录C 库函数 - strcpy()描述声明参数返回值模拟实现1.02.03.04.05.0 描述 char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。 需要注意的是如果目标数组 dest 阅读全文
posted @ 2024-08-05 08:00 HJfjfK 阅读(131) 评论(0) 推荐(0)
摘要:C 字符串查找 - strstr() 描述 C 库函数 char *strstr(const char *haystack, const char *needle) 在字符串 haystack 中查找第一次出现字符串 needle 的位置,不包含终止符 '\0'。 声明 下面是 strstr() 函 阅读全文
posted @ 2024-08-04 22:39 HJfjfK 阅读(149) 评论(0) 推荐(0)
摘要:strcat 描述 char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。 声明 下面是 strcat() 函数的声明。 char *strcat(char *dest, const char *src) 阅读全文
posted @ 2024-08-04 17:26 HJfjfK 阅读(118) 评论(2) 推荐(0)
摘要:目录位段位段的介绍位段使用示例:位段的内存分配Example内存分配解析:位段的跨平台问题 位段 位段的介绍 位段(二进制位):就是按位存储 位段(bit-field)是C语言中的一种特殊数据类型,它允许将一个字节分成几个部分,并为每个部分指定特定的位数,以便在内存中存储和访问这些部分。 其中位段相 阅读全文
posted @ 2024-08-04 17:01 HJfjfK 阅读(341) 评论(0) 推荐(1)
摘要:目录Linux基本命令简单认识shell认识命令的基本格式:内建命令与外部命令查看命令的类型-type查看命令的使用方法-helpmkdirpwdtouchecho认识路径lscd认识热键/linux热键treenanocatgccstatrmrmdir基本认识--创建目录权限linux有多少条指令 阅读全文
posted @ 2024-08-03 22:52 HJfjfK 阅读(978) 评论(0) 推荐(0)