
C++算法
文章平均质量分 55
Douglas_fan
会唱跳rap的全能沉淀体育生程序员
B站:苏晓宇
展开
-
C语言数据结构课设:基于EasyX前端界面的飞机订票系统
特别是在处理复杂数据和设计用户界面时,如何合理地组织代码和数据、如何通过调试和测试来确保程序的正确性和可靠性,是我在本次设计中最大的收获。而充分的测试,可以发现和解决潜在的问题,确保程序的稳定性和可靠性。在本次设计中,所有的航班信息和用户订票信息都保存在文件中,这不仅确保了数据的持久性,还实现了数据的共享和传递。课程设计的意义在于,通过模拟真实的航班订票系统,学生可以直观地理解数据结构和算法在解决实际问题中的作用,提升编程能力和综合素质,为以后从事软件开发及相关工作打下坚实基础。原创 2024-07-23 17:31:45 · 1190 阅读 · 0 评论 -
数据结构实验1:动态分配内存实现三元组的各项功能
我们应该创建一个结构体指针,让他可以动态分配内存;实现动态分配内存的三元组;原创 2024-03-16 11:32:19 · 197 阅读 · 0 评论 -
C++学习:枚举
枚举算法是一种基本的算法思想,它通过穷举所有可能的情况来解决问题。它的基本思想是将问题的解空间中的每个可能的解都枚举出来,并进行验证和比较,找到满足问题条件的最优解或者所有解。枚举算法适用于问题规模较小、解空间可穷举的情况。它的优点是简单直观,不需要复杂的数学推导,易于实现。但是,由于需要穷举所有可能的情况,对于问题规模较大的情况,枚举算法的时间复杂度可能会非常高,效率较低。原创 2024-02-27 17:15:46 · 500 阅读 · 0 评论 -
C++学习:时间空间复杂度
1)空间复杂度是衡量算法执行过程中所需的存储空间随输入规模增长的增长率 2)通过分析算法中所使用的额外存储空间的大小来确定空间复杂度。3)常见的空间复杂度包括:常数空间 0(1)、线性空间 0(n)、对数空间 0(log n)、平方空间0(n^2)等。一般我们关注的是最坏空间复杂度,用O(f(n))表示,大多数时候程序占用的空间一般可以据开的数组大小精确算出,但也存在需要估算的情况。3)常见的时间复杂度包括:常数时间 O(1)、线性时间 O(n)、对数时间 O(logn)、平方时间O(n^2)等。原创 2024-02-27 17:14:54 · 325 阅读 · 0 评论 -
C++学习:map
unordered_map拥有极好的平均时间复杂度和极差的最坏时间复杂度,所以他的时间复杂度是不稳定的。unordered_map是一种关联容器,用于存储一组键值对(key-value pairs),其中每个键(key)都是唯一的与map。map是一种关联容器,用于存储一组键值对(key-value pairs),其中每个键(key)都是唯一的。这使得unordered map具有更快的插入、删除和査找操作的时间复杂度,但不保证元素的顺序。map容器根据键来自动进行排序,并且可以通过键快速查找对应的值。原创 2024-02-21 15:13:18 · 1187 阅读 · 0 评论 -
C++学习:总结
【代码】C++学习:总结。原创 2024-02-21 15:12:13 · 217 阅读 · 0 评论 -
C++学习:set
unordered_set容器使用哈希表来实现元素的存储和访问,因此元素的插入、删除和查找的时间复杂度都是常数时间,即0(1)。set的内部实现使用了红黑树(一种自平衡的二叉搜索树)来存储元素,并保持元素的有序性这使得在set中插入、删除和查找元素的时间复杂度都是对数时间,即O(log n)。set中的元素是按照升序排序的,默认情况下它使用元素的比较运算符(原创 2024-02-20 09:19:19 · 570 阅读 · 0 评论 -
C++学习:queue
priority_queue与普通队列不同,priority_queue中的元素是按照一定的优先级进行排序的默认情况下,priority_queue按照元素的值从大到小进行排序,即最大元素位于队列的前面。Allocator:表示用于分配内存的分配器类型,默认为allocatordeque的内部实现使用了一系列的存储块(缓冲区),每个存储块存储了多个元素,并且通过指针进行连接。Compare:表示元素之间的比较函数对象的类型,默认为less,即按照元素的值进行比较。T:表示存储在queue中的元素的类型。原创 2024-02-19 21:27:02 · 494 阅读 · 0 评论 -
C++学习:stack
stack是一种后进先出(LIF0)的数据结构,使用前需要包含头文件,stack提供了一组函数来操作和访问元素,但它的功能相对较简单。T:表示存储在stack中的元素的类型。Container:表示底层容器的类型,默认为deque。也可以使用其他容器类型,如vector或list。stack的内部实现使用了底层容器来存储元素,并且只能通过特定的函数来访问和操作元素。只能对栈顶元素进行操作,只能把元素放在栈顶来。原创 2024-02-19 21:25:20 · 286 阅读 · 0 评论 -
C++学习:其他库函数
unique() 函数将[first,last)范围内的相邻重复元素去除,并返回一个,去重后的范围中只保留了第一个出现的元素,后续重复的元素都被移除。swap()函数通过将第一个变量的值存储到临时变量中,然后将第二个变量的值赋给第一个变量,最后将临时变量的值赋给第二个变量,实现两个变量值的交换。需要注意的是,reverse()函数只能用于支持双向迭代器的容器,因为它需要能够向前和向后遍历容器中的元素。需要注意的是,unique()函数只能去除相邻的重复元素,如果容器中存在非相邻的重复元素,则无法去除。原创 2024-02-18 12:15:37 · 984 阅读 · 0 评论 -
C++学习:list
list的使用频率不高,在做题时几乎遇不到需要使用list的情景。list是一种双向链表容器,它是标准模板库(STL)提供的一种序列容器。list容器以节点(node的形式存储元素,并使用指针将这些节点链接在一起,形成一个链表结构。list容器结构如下:list容器模板接受两个参数:1.T:指定容器中存储的元素类型。list2.Allocator(可选):指定用于分配内存的分配器类型,默认为。一般不用填。原创 2024-02-18 12:12:55 · 743 阅读 · 0 评论 -
C++学习:vector
在C++中,vector是一个动态数组容器,可以存储一系列相同类型的元素它是标准库中定义的模板类。vector的定义和结构非常简单,它由以下几个重要的部分组成:模板类声明:vector是一个模板类,因此在使用之前需要包含头文件。这里的T是要存储在vector中的元素类型。容器大小:vector是一个动态数组,可以根据需要自动调整大小。它会根据元素的数量动态分配内存空间。元素访问:可以通过索引来访问vector中的元素。索引从0开始,最后一个元素的索引是size( )-1。原创 2024-02-17 15:49:35 · 707 阅读 · 0 评论 -
C++学习:pair
在C++中,pair是一个模板类,用于表示一对值的组合。它位于头文件中。pair类的定义如下:pair类模板有两个模板参数,T1和T2,分别表示第一个值和第二个值的类型。pair类有两个成员变量,first和second,分别表示第一个值和第二个值。pair类还有一些成员函数和特性,例如默认构造函数、带参数的构造函数、比较运算符重载等。使用pair类,你可以方便地将两个值组合在一起,并进行传递、存储和操作。例如,可以将两个整数组合在一起作为函数的返回值,或者将一对值存储在容器中。原创 2024-02-17 07:54:53 · 948 阅读 · 0 评论 -
C++学习:全排列
prev_permutation 函数与next_permutation函数相反,用于生成当前序列的上个排列。它按照字典序对序列进行重新排列,如果存在上一个排列,则将当前序列更改为上一个排列,并返回true;如果当前序列已经是第一个排列,则将序列更改为最后一个排列,并返回 false。它按照字典序对序列进行重新排列,如果存在下一个排列,则将当前序列更改为下一个排列,并返回true;如果当前序列已经是最后一个排列,则将序列更改为第一个排列,并返回 false。原创 2024-02-16 09:34:53 · 458 阅读 · 0 评论 -
C++学习:string的了解
对于字符串的操作自动处理内存的分配和释放。原创 2024-02-06 22:57:02 · 1141 阅读 · 0 评论 -
C++学习:sort快速排序
3.比较函数倒序’>’原创 2024-02-15 22:43:22 · 364 阅读 · 0 评论 -
C++学习:二分查找
如果需要获取找到的元素的位置,可以使用std::lower_bound函数或std::upper_bound函数。lower_bound(st,ed,_x)返回地址[st, ed)中第一个大于等于x的元素的地址。upper_bound(st,ed,x)返回地址[st,ed)中第一个大于x的元素的地址。如果不存在则返回最后一个元素的下一个位置,在vector中即end()对一个数组进行二分查找的前提是这个数组中的元素是单调的。[9,8,8,7,7,1]是单调的。[1,5,5,9,18]是单调的。原创 2024-02-15 22:45:08 · 218 阅读 · 0 评论 -
VS无法使用万能头文件#include <bits/stdc++.h> 的解决办法
第一步在vs中打出可以使用的头文件。如#include上面窗口右键找到打开所在文件夹。创建一个名字为bits的文件夹。把名称修改为stdc++.h。里面创建一个text文件。之后重新启动VS就可以了。复制进去之后,记得保存。原创 2024-02-06 21:17:31 · 1197 阅读 · 0 评论 -
C++学习:最值查找
其中第二个参数位置的元素将处于正确位置,其他位置元素的顺序可能是任意的,但前面的都比它小,后面的都比它大时间复杂度O(n)。min_element(st,ed)返回地址[st,ed)中最小的那个值的下标(迭代器),传入参数为两个地址或迭代器。max_element(st,ed)返回地址[st,ed)中最大的那个值的下标(迭代器),传入参数为两个地址或迭代器。1.min(a,b)返回a和b中较小的那个值,只能传入两个值,或传入一个列表。时间复杂度均为O(n),n为数组大小(由传入的参数决定)原创 2024-02-15 22:44:23 · 661 阅读 · 0 评论 -
C++学习:大小写转换
在ASCII码表中,大写字母的编码范围是65(A)到90(Z),而小写字母的编码范围是97(‘a’)到122(z)。tolower(char ch)可以将ch转换为小写字母,如果ch不是大写字母则不进行操作。toupper()同理。islower和isupper是C++标准库中的字符分类函数,用于检查一个字符是否为小写字母或大写字母。char - 8bit - 2^8个 -256 个-其中有一位符号位-所以用到的是128个字符。Tips:在程序设计时,尤其是用到char类型时,一定要注意到底是“数字0。原创 2024-02-16 09:05:58 · 426 阅读 · 0 评论