- 博客(95)
- 收藏
- 关注
原创 C++ 选择排序、冒泡排序、插入排序
插入排序:工作原理是通过构建有序序列,对于未排序序列,在已排序序列中从后往前扫描,找到对应位置插入,从而使得有序。3 如果该元素小于已排序部分的最后一个部分,则将其插入到已排序部分的适当位置,重复 2和3直到完成排序。冒泡排序的算法优点:是一种稳定的算法,不会改变相同元素的相对位置,缺点便是效率低下,时间复杂度较高。冒泡排序:是一种简单的排序算法,通过多次比较和交换相邻的元素,将数组中的元素按升序或降序排列。这种算法的优点是时间复杂度高,并且会改变相同元素的相对位置,因此这个是一种不稳定的排序算法。
2025-07-08 21:23:26
160
原创 C++ 二分查找、线性枚举、模拟
第一点:数据结构,对于模拟题而言,最关键的其实是数据结构,看到一个问题,选择合适的数据结构,然后根据问题实现对应的功能。F(n) = F(n-1) + F(n-2) ,其中n > 1,给定n(0<=n<=30),请计算F(n)第二点:算法技巧,模拟时一般会用到一些算法技巧,或者说混合算法,比如排序,递归,迭代等等。且在 n > 2的情况下,T(n) = T(n-1) + T(n-2) + T(n-3)线性枚举,对应力扣,有序数组中的单一元素,代码见下。模拟题二:对应力扣,位1的个数,代码见下。
2025-07-03 23:11:28
276
原创 C++ unordered_map基础概念、对象创建、赋值操作、大小操作、数据插入、数据删除、数据修改、代码练习 1 2
unordered_map<type1, type2> 无序映射,是按第一个哈希键来进行检索的。散列容器:unordered_set、unordered_map。unordered_map 赋值操作,代码见下。unordered_map 大小操作,代码见下。unordered_map 数据插入,代码见下。unordered_map 数据查找,代码见下。unordered_map 数据删除,代码见下。unordered_map 数据修改,代码见下。unordered_map 数据统计,代码见下。
2025-06-22 18:13:50
179
原创 C++ unordered_set基础概念、对象创建、赋值操作、数据插入、数据删除、代码练习 1 2
哈希冲突解决方案:常见的解决方案,是在一个桶中放多个元素,这样就可以通过哈希算法快速找到桶,再通过遍历桶中所有元素,来实现快速查找。在STL中,数据不是存在一个bucket桶中,而是利用了(bucket<<1)和(bucket<<1 )+ 1 两个位置,并且把所有桶中元素串联成一个链表,它里面的元素,是从(bucket<<1)的位置作为链表的起点,(bucket<<1 )+ 1的位置作为链表终点,来存储哈希表中所有桶ID为bucket的节点。桶:下标索引又叫桶ID,桶ID是用来索引到某个具体位置的桶。
2025-06-21 18:07:41
431
原创 C++ map代码练习 1、2、priority_queue基础概念、对象创建、数据插入、获取堆顶、出队操作、大小操作,自定义结构、代码练习 1 2
3,元素删除:把数组的第0个元素和最后有一个元素交换、然后对栈顶的元素不断做“下沉”操作,选择大的进行交换,直到“自己”成为最大的、删除数组的最后一个元素。1,元素插入:往数组尾部插入一个元素、对插入的元素,比较他(在树形结构中)和他父节点的大小关系,来决定是否和父节点进行交换。大顶堆:满足堆的概念(比所有子节点大),并且他的子节点也满足堆的概念(比所有子节点大)小顶堆:满足堆的概念(比所有子节点小),并且他的子节点呀满足堆的概念(比所有子节点小)map代码练习1,对应力扣 两个数据的交集,代码见下。
2025-06-17 21:22:20
252
原创 C++ map基础概念、map对象创建、map赋值操作、map大小操作、map数据插入、map数据删除、map数据修改、map数据统计
2 pair中的第一个元素都是key(键),第二个元素是value(值)2 pair中的第一个元素都是key(键),第二个元素是value(值)树形容器:set、multiset、map、multimap。1 容器中所有元素都是pair,first可以重复。1 容器中所有元素都是pair,first不重复。map对象创建,有常用的几种方式,见以下代码。3 所有元素都会根据元素的key值排序。map赋值操作,代码见下。map大小操作,代码见下。map数据删除,代码见下。map插入,代码见下。
2025-06-08 18:11:27
280
原创 C++ set数据插入、set数据查找、set数据删除、set数据统计、set排序规则、代码练习1、2
set数据插入,代码见下。元素:0的出现次数为:0。元素:1的出现次数为:0。元素:2的出现次数为:0。元素:3的出现次数为:1。元素:4的出现次数为:1。元素:5的出现次数为:1。元素:6的出现次数为:0。元素:7的出现次数为:1。元素:0的出现次数为:0。元素:1的出现次数为:3。元素:2的出现次数为:2。元素:3的出现次数为:1。元素:4的出现次数为:0。元素:5的出现次数为:0。元素:6的出现次数为:0。
2025-06-03 23:10:16
313
原创 C++ list代码练习、set基础概念、set对象创建、set大小操作
还有另外一种mutiset:容器内的元素可以重复、每插入一个元素,容器内的元素都会进行有序排序。容器特点:线性容器(vector、string、list),树形容器(set、multiset)有序集合set的特点:容器内的元素不重复、每插入一个元素,容器内的元素都会进行有序排列。对应力扣,回文链表,代码见下。list大小操作,代码见下。set对象创建,代码见下。set赋值操作,代码见下。
2025-06-02 17:32:07
303
原创 C++ list数据删除、list数据访问、list反转链表、list数据排序
list反转列表,代码见下,直接找的内部源码。list数据删除,代码见下。list数据访问,代码见下。list数据排序,代码见下。
2025-05-31 21:51:18
557
原创 C++ list基础概念、list初始化、list赋值操作、list大小操作、list数据插入
list基础概念:list中的每一部分是一个Node,由三部分组成:val、next、prev(指向上一个节点的指针)list初始化的代码,见下。list赋值操作,代码见下。list大小操作,代码见下。运行结果见下,便于理解。
2025-05-26 23:34:41
346
原创 C++ queue对象创建、queue赋值操作、queue入队、出队、获得队首、获得队尾操作、queue大小操作、代码练习
图中赋值的时间复杂度为n,代码见下,是进行了for循环,然后达到了n的复杂度。queue赋值操作,代码见下。queue相关操作,代码见下。queue大小操作,代码见下。
2025-05-25 17:22:38
272
原创 C++ stack大小操作、stack容器替换、代码练习
stack的大小操作,共有两个接口,代码见下。stack容器替换,代码见下。对应力扣,七进制数,代码见下。
2025-05-22 23:38:49
177
原创 C++ deque大小操作、deque数据插入、deque数据删除
deque数据插入,有以下几种形式,见代码。deque大小操作,代码见下。以下是输出结果,可辅助理解。
2025-05-18 16:20:56
218
原创 C++ deque双端队列、deque对象创建、deque赋值操作
deque如果同时进行头插和尾插的话,他的时间复杂度是o(1),如果是vector的话,时间复杂度是o(n),需要视情况进行选择进行插入。如果是只有一个单向插法的话,用vector就可以。如果是两种插入的方式的话,用deque就合适。在deque中,front()是头部元素,back()指的是尾部元素。begin()是指向头部的迭代器,end()是指向尾部的下一个元素的迭代器。push_front 头部进行插入。pop_front 尾部进行删除。pop_back 尾部进行删除。
2025-05-17 23:35:26
288
原创 C++ string数据查找、string数据替换、string子串获取
【代码】C++ string数据查找、string数据替换、string子串获取。
2025-05-13 23:32:40
320
原创 C++ string比较、string随机访问、string字符插入、string数据删除
string的字符串进行比较,代码见下。string随机访问,代码见下。
2025-05-12 23:30:55
240
原创 C++ string初始化、string赋值操作、string拼接操作
以下介绍了string的六种定义方式,还有很多,这个只是简单举例。以下是string的六种赋值操作,以下是代码。string拼接操作,代码见下。
2025-05-11 23:00:08
472
原创 C++ STL编程 vector空间预留、vector高效删除、vector数据排序、vector代码练习
vector的高效删除,对应的代码见下,一个时间复杂度是n,一个时间复杂度是1。vector空间预留,作用是避免申请每次申请内存,提高运行效率。对应的接口是 vector.reverse()代码练习,对应力扣,数组串联,代码见下。
2025-05-11 17:32:46
265
原创 C++ STL编程 vector的插入、删除、扩容机制、随机访问和内存交换
vector有两种插入方式,见以下代码。vector有三种删除方式,代码见下。
2025-04-28 23:30:15
229
原创 C++ STL编程-vector概念、对象创建
在vector中,front()是数组中的第一个元素,back()是数组的最后一个元素。begin()是是指向第一个元素,end()是指向back()的后一个元素。vector 概念:是常见的一种容器,被称为“柔性数组”。vector的对象创建,代码见下。vector的赋值操作,代码见下。
2025-04-18 23:32:02
417
原创 C++ 二叉搜索树代码
代码二 两数之和IV 输入二叉搜索树,对应力扣,代码见下。代码三,对应力扣,二叉搜索树中的众数,代码见下。代码一,对应力扣 递增顺序二叉树,代码见下。
2025-03-10 22:59:48
201
原创 C++二叉搜索树代码
代码二,对应力扣 二叉搜索树的范围和,代码见下。代码一,对应力扣二叉搜索树中的检索,代码见下。代码四,对应力扣 验证二叉搜索树,代码见下。
2025-03-07 23:03:07
318
原创 C++ 二叉树代码练习
代码二,对应力扣,找出克隆二叉树中相同节点,代码见下。代码一,对应力扣,从根到叶的二进制之和,代码见下。代码三,对应力扣,层数最深叶子节点的和,代码见下。代码四,对应力扣,最大二叉树,代码见下。
2025-03-04 22:41:50
173
原创 C++ 二叉树代码
代码四,对应力扣 二叉树的前序遍历,代码见下。代码五,对应力扣,二叉树的中序遍历,代码见下。二叉树代码,对应力扣,完全二叉树的节点个数。代码练习,对应力扣单值二叉树,代码见下。代码,对应力扣,翻转二叉树,代码见下。代码六,对应力扣,二叉树的后续遍历。
2025-03-02 20:45:41
662
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人