自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 收藏
  • 关注

原创 算法课习题汇总(3)

设有N个选手进行循环比赛,其中N=2M,要求每名选手要与其他N−1名选手都赛一次,每名选手每天比赛一次,循环赛共进行N−1天,要求每天没有选手轮空。

2024-09-28 15:00:27 576 6

原创 vector的模拟实现以及oj题(2)

上篇博客介绍了大部分vector的接口,其中包括begin()、end()、const begin()、 const end()、size、capacity、reserve、empty、push_back、pop_back、insert、operator[],这篇博客将介绍剩下的部分接口,以及一些oj题解法和思路。

2024-09-28 13:50:31 1076 2

原创 vector的模拟实现以及oj题

上篇博客介绍了voctor的大部分的重要接口,本篇博客将模拟实现部分接口的效果。

2024-09-24 16:57:58 323 13

原创 string和oj题以及vector的接口介绍

vector的构造函数⁂ 代表重点vector的构造函数说明vector()⁂无参构造构造并初始化n个val拷贝构造使用迭代器进行构造vector的输出方式⁂ 代表重点vector的输出方式说明范围for从头到尾遍历返回vector中n处的元素的引用获取第一个数据位置的iterator 获取最后一个数据的下一个位置的iterator获取第一个数据位置的reverse_iterator, 获取最后一个数据的reverse_iterator。

2024-09-24 16:26:35 1061 19

原创 算法课习题汇总(2)

将正整数n表示成一系列正整数之和,n=n1+n2+…+nk(n1>=n2>=…>=nk,k>=1)。正整数n的这种表示称为正整数n的划分。思路:n表示待划分数,m表示最大减数。

2024-09-20 21:41:29 671 13

原创 string类的模拟实现以及oj题

上篇博客实现了string类的begin()、end()、构造函数、析构函数、c_str、size()、clear()、capacity()、[ ]、reserve()、push_back、append()、insert()、+=。这篇博客实现剩下的一些重要功能。

2024-09-20 21:41:08 1160 21

原创 力扣刷题(6)

【代码】力扣刷题(6)

2024-09-16 10:25:26 605 24

原创 string类的模拟实现

实现string的模拟实现分为三个文件,分别为:string.h、sting.cpp、test.cpp。

2024-09-16 10:07:02 505 9

原创 算法课习题汇总(1)

求取数组中最大连续子列和。例如给定数组为A={1, 3, -2, 4, -5}, 则最大连续子列和为6,即1+3+(-2)+ 4 = 6。思路:利用两个for循环嵌套,使列出所以子列的可能性,找出最大子列思路:当子列之和小于0时,则该子列必定不为最大子列,直接将子列之和置空。

2024-09-13 14:16:54 352 3

原创 string(2)

字符串最后一个单词的长度思路:不能使用cin作为输入,因为cin在遇到空格时就会结束,可以使用getline代替return 0;

2024-09-13 11:30:41 608 1

原创 力扣刷题(5)

【代码】力扣刷题(5)

2024-09-08 20:03:10 540 11

原创 string(1)

C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。

2024-09-08 13:32:07 1045 19

原创 力扣刷题(4)

时间复杂度为O(n^2),无法通过,因此需要其他的方法。解法一:最容易想出的方法就是将每个位置都进行比较。该解法的时间复杂度为O(n),因此可以轻松的通过。

2024-09-04 19:57:29 460 11

原创 内存管理、模块初阶、STL简介

class 类模板名// 类内成员定义// 类模版public:_size = 0;// 模版不建议声明和定义分离到两个文件.h 和.cpp会出现链接错误// 扩容++_size;是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。

2024-09-04 10:44:15 919 20

原创 力扣刷题(3)

思路:利用%和/不断循环取待反转整数的最后一位,注意判断是否超出范围。

2024-08-31 16:02:53 403 15

原创 类和对象以及内存管理

int main()// new/delete 和 malloc/free最大区别是 new/delete对于// 自定义类型除了开空间还会调用构造函数和析构函数free(p1);delete p2;// 内置类型是几乎是一样的free(p3);delete p4;free(p5);return 0;new与mallocdelete与free。

2024-08-31 11:44:01 941 20

原创 力扣刷题(2)

【代码】力扣刷题(2)

2024-08-28 17:14:59 462 12

原创 类和对象(4)

因为初始化列表的顺序是按声明顺序进行的,因此我们可以知道_a2先进行声明,因此先计算_a2(_a1),由于_a1还未进行声明,因此_a2为随机值,又因为传入了1,不用使用缺省值,因此_a1为1。因此,答案为 1 随机值,选D。由于c为全局变量,因此c先调用构造函数,再进入main函数中,紧接着a,b再调用构造函数,最后d再调用构造函数,因此构造函数的调用顺序为 c a b d,因此选E。析构函数的调用顺序为局部到整体,并且先进行构造函数的后进行析构函数,因此析构函数的顺序为 b a d c,选B。

2024-08-28 13:28:33 2136 16

原创 力扣刷题(1)

创建一个bool类型的数组,当数组不重复时,数组向右扩展,增大窗口;当出现相同时,数组的左边向右移动,减小窗口。

2024-08-25 12:28:12 607 1

原创 C语言试题(含答案解析)

1.下面C程序的运行结果为()A.编译错误B.1C.0D.运行错误'A’的ascii码值为65,‘B’的ascii码值为66,‘B’

2024-08-23 19:36:58 4672 16

原创 外排序之文件归并排序实现

外排序是指能够处理极大量数据的排序算法。通常来说,外排序处理的数据不能一次装入内存,只能放在读写较慢的外存储器(通常是硬盘)上。外排序通常采用的是⼀种“排序-归并”的策略。在排序阶段,先读入能放在内存中的数据量,将其排序输出到⼀个临时文件,依此进行,将待排序数据组织为多个有序的临时文件。然后在归并阶段将这些临时文件组合为⼀个大的有序文件,也即排序结果。跟外排序对应的就是内排序,之前常见的排序,都是内排序,这些排序思想适应的是数据在内存中,支持随机访问。

2024-08-23 10:43:40 392 18

原创 快速排序的深入优化探讨

决定快排性能的关键点是每次单趟排序后,key对数组的分割,如果每次选key基本⼆分居中,那么快排的递归树就是颗均匀的满⼆叉树,性能最佳。但是实践中虽然不可能每次都是⼆分居中,但是性能也还是可控的。但是如果出现每次选到最小值/最大值,划分为0个和N-1的子问题时,时间复杂度为O(N^2),数组序列有序时就会出现这样的问题,但是当数组中有大量重复数据时,之前的快速排序方法就会比较慢,因此我们需要更进算法。

2024-08-20 16:25:17 278 11

原创 贪吃蛇游戏

Windows这个多作业系统除了协调应⽤程序的执行、分配内存、管理资源之外,它同时也是⼀个很大的服务中心,调用这个服务中心的各种服务(每⼀种服务就是⼀个函数),可以帮应用程式达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序,所以便称之为,简称API函数。WIN32API也就位平台的应用程序编程接口。245OK , //正常运行 KILL_BY_WALL , //撞墙 KILL_BY_SELF , //咬到自己 END_NOMAL //正常结束 };

2024-08-20 10:46:54 989 15

原创 类和对象(3)

C++C++operatorthisoperator@Dateoperator-operator+++前置++后置++operator++C++后置++int前置++<<>>this<<cout。

2024-08-14 19:56:32 935 4

原创 计数排序以及排序总结

稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。排序方式平均情况最好情况最坏情况辅助空间稳定性冒泡排序O(n^2)O(n)O(n^2)O(1)稳定直接选择排序O(n^2)O(n^2)O(n^2)O(1)不稳定直接插入排序O(n^2)O(n)O(n^2)

2024-08-14 09:58:46 471 17

原创 类和对象(2)

⼀个类,我们不写的情况下编译器会默认生成以下6个默认成员函数,需要注意的是这6个中最重要的是前4个。其次就是C++11以后还会增加两个默认成员函数,和。

2024-08-11 18:05:39 1108 4

原创 交换排序和归并排序

上篇博客我们介绍了中的以及中的hoare,这篇博客将会介绍中的lomuto,最后再介绍。

2024-08-11 12:56:38 384 1

原创 类和对象(1)

为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前面或者后面加或者开头,注意中这个并不是强制的,只是⼀些惯例,具体看公司的要求。中也可以定义类,兼容C中的用法,同时升级成了类,明显的变化是中可以定义函数,⼀般情况下我们还是推荐用定义类。定义在类⾯的成员函数默认为。访问限定符⼀种实现封装的方式,用类将对象的属性与方法结合在⼀块,让对象更加完善,通过访问权限选择性的将其接口提供给外部的用户使用。修饰的成员在类外可以直接被访问;和修饰的成员在类外不能直接被访问,和是⼀样的

2024-08-07 20:19:24 964 13

原创 选择排序和交换排序

在上篇博客中已经介绍了插入排序中的直接插入排序和希尔排序,这篇博客将会介绍选择排序和交换排序。

2024-08-07 12:25:52 403 2

原创 直接插入排序和希尔排序

希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定⼀个整数(通常是gap=n/3+1),把待排序文件所有记录分成各组,所有的距离相等的记录分在同一组内,并对每一组内的记录进行排序,然后。所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。得到下⼀个整数,再将数组分成各组,进行插入排序,当。的排序码顺序进行比较,找到插入位置。插⼊,原来位置上的元素顺序后移。时,就相当于直接插入排序。

2024-08-05 11:25:26 338 5

原创 二叉树的选择题

某⼆叉树的后序遍历序列与中序遍历序列相同,均为ABCDEF ,则按层次输出(同⼀层从左到右)的序列为:()设⼀课⼆叉树的中序遍历序列:badce,后序遍历序列:bdeca,则⼆叉树前序遍历序列为____。某⼆叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该⼆叉树中的叶结点数为( )⼀棵完全⼆叉树的结点数位为531个,那么这棵树的高度为( )⼀个具有767个结点的完全⼆叉树,其叶子结点个数为()二叉树的先序遍历的第一个结点为根结点,所以选A。对任何一棵二叉树,如果度为。

2024-08-05 08:59:37 877

原创 C++入门基础

定义命名空间,需要使用到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出⼀个域这个域跟全局域各自独立,不同的域可以定义同名变量,所以下⾯的rand不在冲突了。C++中域有函数局部域全局域命名空间域类域;域影响的是编译时语法查找⼀个变量/函数/类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。

2024-08-02 19:09:50 2007 8

原创 二叉树算法题(2)

【代码】二叉树算法题(2)

2024-08-02 10:59:16 333 1

原创 二叉树算法题(1)

【代码】二叉树算法题(1)

2024-07-31 17:04:43 316 1

原创 二叉树——链式结构的实现

用链表来表示⼀棵⼆叉树,即用链来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩⼦和右孩⼦所在的链结点的存储地址。首先是分为三个文件进行实现:tree.h、tree.c、test.c。访问顺序为:根结点、左子树、右子树。访问顺序为:左子树、根结点、右子树。访问顺序为:左子树、右子树、根结点。判断二叉树是否为完全二叉树。⼆叉树查找值为x的结点。⼆叉树第k层结点个数。

2024-07-31 09:27:14 464 6

原创 二叉树(2)

第h层, 2^(h-1)个结点,交换到根结点后,需要向下移动h-1层。第3层, 2^2个结点,交换到根结点后,需要向下移动2层。第4层, 2^3个结点,交换到根结点后,需要向下移动3层。第1层,2^0个结点,交换到根结点后,需要向下移动0层。第2层,2^1个结点,交换到根结点后,需要向下移动1层。第h层,2^(h-1)个结点,需要向上移动h-1层。第h-1层,2^(h-2)个结点,需要向下移动1层。第1层,2^0个结点,需要向下移动h-1层。第2层,2^1个结点,需要向下移动h-2层。

2024-07-29 12:37:24 435 2

原创 二叉树以及堆的实现

树是⼀种非线性的数据结构,它是由n(n>=0)个有限结点组成⼀个具有层次关系的集合。把它叫做树是因为它看起来像⼀棵倒挂的树,也就是说它是根朝上,而叶朝下的。有⼀个特殊的结点,称为根结点,根结点没有前驱结点。除根结点外,其余结点被分成M(M>0)个互不相交的集合,其中每⼀个集合又是⼀棵结构与树类似的⼦树。每棵子树的根结有且只有⼀个前驱,可以有0个或多个后继。因此,树是递归定义的。子树不相交除了根结点外,每个结点有且仅有一个父结点一棵N个结点的树有N-1条边。

2024-07-27 14:54:46 1019 9

原创 栈和队列的相关练习

本题可以借助数组作为底层的结构,因此在初始化时,动态开辟一个数组,并将数组的头尾和数组大小进行记录。思路同出队方法,只是不需要进行出栈的操作,直接返回栈顶元素的值。寻找不为空的队列,将该队列的队尾元素进行返回。首先引用上一篇博客中的队列的相关操作。首先引用上上篇博客中栈的相关操作。将两个队列分别进行销毁,并将。往不为空的队列中入队。直接进行入栈操作即可。

2024-07-27 08:57:07 461 7

原创 队列的实现

与之前的线性表实现不同的是,队列的实现需要两个。

2024-07-24 16:34:48 396 3

原创 栈以及栈的实现

栈的创建类似于顺序表,唯一的变化就是将。获取栈中有效元素个数。

2024-07-24 15:13:40 447 6

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除