自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 introsort的快排跑排序OJ代码

introsort是introspective sort采⽤了缩写,他的名字其实表达了他的实现思路,他的思路就是进⾏⾃ 我侦测和反省,快排递归深度太深(sgi stl中使⽤的是深度为2倍排序元素数量的对数值)那就说明在这种数据序列下,选key出现了问题,性能在快速退化,那么就不要再进⾏快排分割递归了,改换为堆 排序进⾏排序。这个方法比较神的地方在于可以适用于绝大多数情况。

2024-08-24 22:42:43 116

原创 排序补充之快排的三路划分法

决定快排性能的关键点是每次单趟排序后,key对数组的分割,如果每次选key基本⼆分居中,那么快 排的递归树就是颗均匀的满⼆叉树,性能最佳。但是实践中虽然不可能每次都是⼆分居中,但是性能 也还是可控的。但是如果出现每次选到最⼩值/最⼤值,划分为0个和N-1的⼦问题时,时间复杂度为 O(N^2),数组序列有序时就会出现这样的问题,我们前⾯已经⽤三数取中或者随机选key解决了这个问 题,也就是说我们解决了绝⼤多数的问题,但是现在还是有⼀些场景没解决(数组中有⼤量重复数据 时),类似⼀下代码。

2024-08-24 22:40:28 174

原创 初阶数据结构之排序(完整版)

1.元素集合越接近有序,直接插⼊排序算法的时间效率越⾼2.时间复杂度:O(N^2)3.空间复杂度:O(1)注意点:最不好的情况是降序排序的时候那么我们该怎样进一步优化呢,接下来我们来看。

2024-08-21 22:12:10 1444 6

原创 初阶数据结构之计数排序

假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,⽽在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;A:通俗点来说就是 ,举一个例子,2,1,3,4,2 稳定的情况是排完序后相同的数字前后顺序一致,不稳定则相反。2)根据统计的结果将序列回收到原来的序列中。直接选择排序:5 8 5 2 9。空间复杂度: O(range)希尔排序:5 8 2 5 9。堆排序:2 2 2 2。

2024-08-21 21:54:25 360 4

原创 初阶数据结构之快速排序(续)和归并排序

时间复杂度: O(nlogn)空间复杂度: O(logn)

2024-08-20 01:32:24 261 2

原创 初阶数据结构之直接选择排序和快速排序

1.直接选择排序思考⾮常好理解,但是效率不是很好。实际中很少使⽤2.时间复杂度: O(N。

2024-08-17 23:37:14 719 3

原创 希尔排序时间复杂度的计算

希尔排序时间复杂度不好计算,因为 gap 的取值很多,导致很难去计算,因此很多书中给出的希尔排 序的时间复杂度都不固定。外层循环的时间复杂度可以直接给出为: O(log2 n) 或者 O(log3 n) ,即 O(log n)

2024-08-17 23:23:57 201 6

原创 初阶数据结构排序之插入排序

1.元素集合越接近有序,直接插⼊排序算法的时间效率越⾼2.时间复杂度:O(N^2)3.空间复杂度:O(1)注意点:最不好的情况是降序排序的时候那么我们该怎样进一步优化呢,接下来我们来看。

2024-08-15 23:13:09 733 18

原创 ⼆叉树选择题

节点的个数为度为2的节点个数+度为1的节点个数+叶子节点个数,又因为度为2的节点个数=叶子节点个数-1,综合起来看,需要做出讨论的是度为1的节点个数,因为总结点的个数为2n,是一个偶数,所以不能为奇数,所以为n,选A。第三题根据后序遍历确定根节点为a,再来看中序遍历,确定左右子树,确定b为左子树,发现ce位置不同,所以再来看后序遍历,确定c为右子树的根节点,所以选D。该完全⼆叉树的前序序列为( )假设⼀个⼆叉树有 a 个度为2的节点, b 个度为1的节点, c 个叶节点,则这个⼆叉树的边数是。

2024-08-15 12:57:25 584 21

原创 C++之类与对象(中)(完整版)

我们不写,编译器默认⽣成的构造,对内置类型成员变量的初始化没有要求,也就是说是是否初始 化是不确定的,看编译器。对于⾃定义类型成员变量,要求调⽤这个成员变量的默认构造函数初始 化。如果这个成员变量,没有默认构造函数,那么就会报错,我们要初始化这个成员变量,需要⽤ 初始化列表才能解决,初始化列表。说明:C++把类型分成内置类型(基本类型)和⾃定义类型。内置类型就是语⾔提供的原⽣数据类型,如:int/char/double/指针等,⾃定义类型就是我们使⽤class/struct等关键字⾃⼰定义的类型。

2024-08-13 23:28:59 873 1

原创 C++之类与对象(中)(上篇)

我们不写,编译器默认⽣成的构造,对内置类型成员变量的初始化没有要求,也就是说是是否初始 化是不确定的,看编译器。对于⾃定义类型成员变量,要求调⽤这个成员变量的默认构造函数初始 化。如果这个成员变量,没有默认构造函数,那么就会报错,我们要初始化这个成员变量,需要⽤ 初始化列表才能解决,初始化列表。说明:C++把类型分成内置类型(基本类型)和⾃定义类型。内置类型就是语⾔提供的原⽣数据类型,如:int/char/double/指针等,⾃定义类型就是我们使⽤class/struct等关键字⾃⼰定义的类型。

2024-08-12 22:10:10 857 10

原创 二叉树相关的算法题

如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回true;否则返回false。

2024-08-11 12:35:18 799 15

原创 C语言深度剖析(部分)--剩下随缘更新

博主事情也比较多,但是保证会保质保量的

2024-08-07 21:53:34 905 18

原创 C++之类和对象(上)

• class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省 略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或 者成员函数。• 为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_ 或者 m 开头,注意C++中这个并不是强制的,只是⼀些惯例,具体看公司的要求。

2024-08-07 17:30:51 927 33

原创 C++入门基础(完整版)含下卷

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

2024-08-06 00:54:04 869 7

原创 C++入门基础(上篇)

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

2024-08-04 23:41:29 932 4

原创 二叉树--堆(下卷)

如果有还没看过上卷的,可以看这篇,链接如下:http://t.csdnimg.cn/HYhax堆的插⼊将新数据插⼊到数组的尾上,再进⾏向上调整算法,直到满⾜堆。💡 向上调整算法• 先将元素插⼊到堆的末尾,即最后⼀个孩⼦之后• 插⼊之后如果堆的性质遭到破坏,将新插⼊结点顺着其双双亲往上调整到合适位置即可代码如下:计算向上调整算法建堆时间复杂度因为堆是完全⼆叉树,⽽满⼆叉树也是完全⼆叉树,此处为了简化使⽤满⼆叉树来证明(时间复杂度本 来看的就是近似值,多⼏个结点不影响最终结果)分析:第1层, 2 0 个结

2024-07-30 21:45:41 837 6

原创 二叉树--堆(上卷)

树是⼀种的数据结构,它是由 n(n>=0) 个有限结点组成⼀个具有层次关系的集合。把它叫做 树是因为它看起来像⼀棵的树,也就是说它是根朝上,⽽叶朝下的。• 有⼀个特殊的结点,称为根结点,根结点没有前驱结点。• 除根结点外,其余结点被分成 M(M>0) 个互不相交的集合 T1、T2、……、Tm ,其中每⼀个集合 Ti(1 <= i <= m) ⼜是⼀棵结构与树类似的⼦树。每棵⼦树的根结点有且只有⼀个前驱,可以 有 0 个或多个后继。因此,树是递归定义的。

2024-07-29 21:43:27 1074 11

原创 数据结构之队列

有关数据结构的队列的知识,是用C语言实现的,还有队列的算法题,以及和栈的对比

2024-07-26 21:35:00 1176 13

原创 数据结构之栈

栈:⼀种特殊的。进⾏数据插⼊和删除操作 的⼀端称为栈顶,另⼀端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。:栈的插⼊操作叫做进栈/压栈/⼊栈,⼊数据在栈顶。:栈的删除操作叫做出栈。栈底层结构选型。

2024-07-22 19:51:10 467 13

原创 双向链表详解

注意:这⾥的“带头”跟前⾯我们说的“头结点”是两个概念,实际前⾯的在单链表阶段称呼不严 谨,但是为了同学们更好的理解就直接称为单链表的头结点。在单链表中我们会去说头节点,并不是意思是说,单链表是带头链表,而是指的是单链表的第一个节点,方便理解而已。双向链表和单链表的区别在于:双向链表有哨兵位,也就是带头,我们在扩容的时候需要传一个无效的数据去占位。单链表是单向的所以只有指向下一节点的指针,而双向链表是双向的所以还要包括指向前一节点的指针。:数据+指向下一节点的指针+指向前一个节点的指针。

2024-07-20 22:11:23 605 14

原创 单链表算法题

的输入如下(你设计的程序。

2024-07-19 11:52:37 859 10

原创 单链表专题

给你一个数组nums和一个值val,你需要移除所有数值等于val的元素。元素的顺序可能发生改变。然后返回nums中与val不同的元素的数量。假设nums中不等于val的元素数量为knumsnumskvalnumsnumsk如果所有的断言都通过,你的解决方案将会。首先来解析题干:如上图所示:我们可能会想到第一个思路就是:创建新的数组tmp[],遍历原数组,将不为val的值放到新数组中,但是题干里面如红框子所框住的地方扼杀了我们这个思路。O(1)这里指的是时间复杂度,也就是不额外开辟空间。

2024-07-14 11:17:57 911 5

原创 数据结构第一关---- 复杂度

同理,数据结构就是对数据进行管理。:数据结构(Data Structure)是计算机存储、组织数据的⽅式,指相互之间存在⼀种或多种特定关系的数 据元素的集合。没有⼀种单⼀的数据结构对所有⽤途都有⽤,所以我们要学各式各样的数据结构, 如:线性表、树、图、哈希等:算法(Algorithm):就是定义良好的计算过程,他取⼀个或⼀组的值为输⼊,并产⽣出⼀个或⼀组值作为 输出。简单来说算法就是⼀系列的计算步骤,⽤来将输⼊数据转化成输出结果。数据结构好比是一个收纳整齐的容器,算法好比是取得想要东西的统筹方法,所以说。

2024-07-12 22:05:18 911 5

原创 顺序表的应用

相关的知识可以知道,我们这里包含了Contact.h这个头文件,就相当于Contact.h文件里面全部内容在SeqList.h里面,所以不用加struct。这里pos不可以等于ps->size,因为size是有效个数的下一位,删去一位之后位置就空了一位,就没有意义。顺序表里面可以存放内置的数据:int, char,也可以是自定义类型如。printf(“请选择您的操作:\n”);写通讯录就相当于写一个结构体的顺序表。//要根据对应的op执行对应的操作。这个是联系人里面所要存储的信息。

2024-07-06 19:16:40 481

原创 顺序表--数据结构第一关

主要是以C语言的基础上实现顺序表

2024-06-27 15:06:49 678

原创 模拟实现 Atoi

接着我们来引入一个新的库函数isspace它是来解决前面有多少空格的问题,接着是处理正负号的问题,如果指针检测到前面有—,那么就令flg=-1,我们还定义了一个全局变量,叫state,是为了判断是否运算出现了问题。我们又要引入一个新的库函数isdight 来判断前面是否有数字,首先先判断是否为空指针。

2024-06-18 18:25:59 209

原创 找单身狗2

这里是最后一位进行比较,按位异或是相同为0,相异为1,最后一位从上图看出是1,说明这两个数不一样,就可以让这两个数被分开。接下来的问题是怎么把5和6分开来?3.根据什么标准分成两组?1.怎么把它分成两组?2.为什么分成两组?

2024-06-18 13:09:23 2045 1

原创 C语言期末习题(结构体开始)

包含内容:结构体,枚举,联合体,动态内存管理,宏定义,编译,链接,预处理等相关知识,以题目的方式带着复习知识点,加油,相信一定对你有很大收获

2024-06-18 09:10:37 948

原创 预处理详解

对于一些预处理的介绍,这次把图片也搞上了哈哈哈哈233333

2024-06-09 11:01:42 1071 2

原创 编译和链接

经过预处理后的 .i ⽂件中不再包含宏定义,因为宏已经被展开。并且包含的头⽂件都被插⼊到 .i ⽂件中。所以当我们⽆法知道宏定义或者头⽂件是否包含正确的时候,可以查看预处理后的 .i ⽂件 来确认。

2024-06-05 14:05:56 706

原创 文件操作(新增了一点点内容)

磁盘(硬盘)上的⽂件是⽂件。但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类 的)。一些标注:我们举一个例子:拿fputc说:再来举个例子使用方式如下:如果想要一次性打出,可以尝试放到循环里面int main()//从键盘(标准输入流)上读取//将字符输出(写)到屏幕(标准输出流)return 0;fputsint main()//1.打开文件return 1;//2.写文件", pf);//3.关闭文件fclose(pf);

2024-06-03 19:04:13 775

原创 文件的操作

磁盘(硬盘)上的⽂件是⽂件。但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类 的)。一些标注:我们举一个例子:拿fputc说:再来举个例子使用方式如下:如果想要一次性打出,可以尝试放到循环里面int main()//从键盘(标准输入流)上读取//将字符输出(写)到屏幕(标准输出流)return 0;[外链图片转存中…

2024-06-01 19:46:30 1050

原创 序列中删除指定的数字

有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。数据范围:序列长度和序列中的值都满足 1≤𝑛≤501≤n≤50。

2024-06-01 14:05:43 192

原创 变种水仙花

变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。例如:461 + 14求出 5位数中的所有 Lily Number。

2024-05-31 21:09:12 253

原创 结构体相关习题的补充

则下面的叙述不正确的是:( )A.struct 是结构体类型的关键字B.struct student 是用户定义的结构体类型C.num, score 都是结构体成员名D.stu 是用户定义的结构体类型名:D。

2024-05-31 20:47:36 640

原创 内存动态管理

栈区(stack):在执⾏函数时,函数内局部变量的存储单元都可以在栈上创建,函数执⾏结束时这些存储单元⾃动被释放。栈内存分配运算内置于处理器的指令集中,效率很⾼,但是分配的内存容量有限。栈区主要存放运⾏函数⽽分配的局部变量、函数参数、返回数据、返回地址等。堆区(heap):⼀般由程序员分配释放, 若程序员不释放,程序结束时可能由OS(操作系统)回收。分配⽅式类似于链表。数据段(静态区):(static)存放全局变量、静态数据。程序结束后由系统释放。

2024-05-30 18:09:33 1030

原创 C语言实现扫雷:数组和函数的实现

在线扫雷游戏:http://www.minesweeper.cn/上面是一个在线的扫雷游戏,可以先尝试玩一玩来感受一下。

2024-05-26 16:06:21 316

原创 自定义类型:结构体

数组和结构体的区别![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?以上是要学习的内容,可以明显看出结构体内存对齐是重点知识位段的成员必须是 **int、unsigned int 或signed int **,在C99中位段成员的类型也可以 选择其他类型。位段的成员名后边有⼀个冒号和⼀个数字。

2024-05-25 16:52:26 756

原创 数据在内存中的存储

其实超过⼀个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分 为⼤端字节序存储和⼩端字节序存储,下⾯是具体的概念:⼤端(存储)模式:是指数据的低位字节内容保存在内存的⾼地址处,⽽数据的⾼位字节内容,保存在内存的低地址处。⼩端(存储)模式:是指数据的低位字节内容保存在内存的低地址处,⽽数据的⾼位字节内容,保存在内存的⾼地址处。上述概念需要记住,⽅便分辨⼤⼩端和生活中排序一样的是大端字节序存储,与之相反是小端字节序存储。

2024-05-22 18:51:54 941

空空如也

空空如也

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

TA关注的人

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