- 博客(64)
- 收藏
- 关注
原创 【评价类模型】Topsis
综合赋权法:Topsis法:主要适用情况:题目提供了足够的评价指标和数据,数据已知,评价指标的类型差异较大基本思想:将所有方案与理想解和夫理想解进行比较,通过激素那方案与这两个解的举例去欸的那个方案的优劣程度。
2024-06-02 22:12:15
574
原创 【评价类模型】熵权法
熵权法是通过计算每个指标的信息熵来确定其在决策中的重要程度的方法。信息论中,熵是对不确定性的一种度量,可判断一个事件的随机性及无序程度。用熵值判断某个指标的离散程度,指标的离散程度越大,该指标对综合评价的影响越大。
2024-05-31 22:16:20
1178
原创 【C++】【类和对象】初始化列表
初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。注意:1.类中的每个成员在初始化列表中只能出现一次(初始化只能初始化一次)2.类中有以下成员时,只能用初始化列表将他们初始化:(1) 引用成员变量(2) const成员变量(3) 自定义类型成员(且该类没有默认构造函数时):尽量使用初始化列表初始化,因为不管你是否使用初始化列表,对于自定义类型成员变量,一定会先使用初始化列表初始化。
2024-02-19 15:16:35
420
原创 【C++】实践运算符重载:日期类的实现
因为operator+(int dayn)中需要调用构造函数,而+=不用,如果先实现+再实现+=,就需要调用两次构造函数。先+=再+只需调用一次构造函数。注意:先实现+=再+,比先实现+再+=更优。
2024-02-15 11:37:22
233
原创 【C++】【类和对象】拷贝构造函数
程序崩溃的原因:s2是s1的拷贝,s1的_arry和s2的_arry指向同一块空间,根据析构函数调用的顺序可知,s2的_arry空间先被释放,也就是两者共同指向的空间被释放了,此时s1成为野指针。s2的析构函数调用完以后,s1的析构函数接着被调用,一块空的空间又被释放了一次,所以此时程序崩溃。默认的拷贝构造函数对象按内存存储按字节序完成拷贝,这种拷贝叫做。(一般常用const修饰),在用已存在的类类型对象创建新对象时由编译器自动调用。从运行结果可以看出::在编译器生成的。,该形参是对本类类型对象的。
2024-02-07 21:26:44
360
原创 【C++】【类和对象】构造函数
自定义类型就是我们使用class/struct/union等自己定义的类型,看看下面的程序,就会发现编译器生成。如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数,一旦用户显式定义编译器将不再生成。将Date类中构造函数放开,代码编译失败,因为一旦显式定义任何构造函数,编译器将不再生成。将Date类中构造函数屏蔽后,代码可以通过编译,因为编译器生成了一个无参的默认构造函数。.问:不实现构造函数的情况下,编译器会生成默认的构造函数。3.对象实例化时,编译器自动调用对应的构造函数。
2024-02-04 16:23:29
535
原创 【C++】【类和对象】this指针
1.this指针的类型是:const Type*const pointer ,所以它存储了调用它的对象的地址,指向空间的值不能改变,指向哪块空间不能改变,不能对this指针进行赋值。因为Print()这个函数存储不在对象里,而是一块公共的空间,所以函数不在p指向的对象里,调用函数时不对p解引用,所以虽然p是空指针,但并没有解引用成为野指针。2.this指针的本质是成员函数的形参,所以当对象调用成员函数时,将对象的地址作为实参传给形参this指针,对象中不储存this指针。
2024-02-04 11:39:26
374
原创 【C++】类和对象_1_定义和定义域
class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。
2024-01-31 16:23:26
463
原创 【C语言】快排(霍尔法)的底层逻辑——二叉树分治
否则如果没有比a[keyi]小的数,right就会一直减减,导致越界;没有比a[keyi]大的数left就会一直加,导致越界。最后当left和right相遇时,把a[left]和a[keyi]的值交换,并把下标left和keyi也交换。这时候,以keyi为根节点,左边看成左子树,右边看成右子树,只要左右都各自排成有序,整个数组就有序了。left和right往中间走,right先走,找数值比a[keyi]小的。两个子循环的条件也要加上left<right。left后走,找数值比a[keyi]大的。
2024-01-25 15:37:42
741
原创 【C语言】【插入排序】
用tmp先存储最后一个元素的值,再将此元素和前面元素依次比较,如果比前一个元素大,就让前面一个元素右移,直到碰到比tmp大的元素,就插入到此元素后面一个位置(下标为end+1)如果最前面一个位置都进行了右移,那么end的值就为-1,end+1就是0,最后就把tmp插入到第一个位置。变量end代表某次循环,要比较范围的左区间端点的下标,一开始end=0;第一层循环控制的是趟数,i<n-1是防止end+1越界。变量tmp代表end后一个元素的下标。
2024-01-24 19:56:03
424
原创 【Leetcode 572.另一棵树的子树】【C语言】判断一棵树是否是另一棵树的子树
【代码】【Leetcode 572.另一棵树的子树】【C语言】判断一棵树是否是另一棵树的子树。
2024-01-23 19:52:20
475
原创 【Leetcode 101.对称二叉树】【C语言】判断一颗二叉树是否是对称二叉树(相同的树的变形)
【代码】【Leetcode 101.对称二叉树】【C语言】判断一颗二叉树是否是对称二叉树(相同的树的变形)
2024-01-23 19:46:54
587
原创 【Leetcode 144.二叉树的前序遍历】将二叉树每个节点的值以前序遍历的顺序存入数组中
题目里给的形参:int*returnSize 是个输出型变量 ,之所以给指针,是为了便于修改returnSize所指向的数值,这个数值就是数组中元素的个数。
2024-01-22 16:50:22
568
1
原创 【Leetcode 100.】判断两颗二叉树是否是相同的树
我一开始写的代码是想按照:自己,左子树,右子树的思路来的,先判断自己跟自己的左孩子右孩子是否和另一棵树相等,但是遇到了问题:当两棵树的root都有左孩子时,会误判成false。所以将思路改为只判断当前节点是否两棵树相等,让左孩子和右孩子去当下一次递归的主体。
2024-01-22 15:41:09
672
原创 【Leetcode 965.】判断单值二叉树
示例一:示例二:本题思路:分成三部分:自己,左子树,右子树先判断自己跟自己的左孩子和右孩子的val是否相等,再判断左子树和右子树是否满足条件这道题的精髓在于这两条判断条件,既解决了怎样判断root的左孩子或右孩子是否为空,又解决了root自己是否满足单值二叉树的条件
2024-01-22 15:07:38
412
原创 【C语言】【堆排序实现TOPK问题】写一个堆排序,并且在一百万个数中找出最大的前K个
如果要升序输出,则实现大堆如果要降序输出,则实现小堆(升序输出)将堆顶的元素和最后一个元素交换位置,此时左子树和右子树分别仍是大堆的顺序,交换位置后选出了最小的数。接着向下调整使剩余的元素再成为一个大堆,然后再交换,选出第二小的数…
2023-12-05 17:30:46
172
1
原创 【C语言】【字符串函数的模拟实现】strcpy,strcat,strcmp,strncpy,strncat,strstr
当sour走到’\0’的时候,跳出循环,完成拷贝。
2023-12-02 10:17:42
195
3
原创 【C语言】【选择排序及其优化】
选择排序是指:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾,,直到全部待排序的数据元素的个数为零。
2023-11-27 21:36:54
225
原创 【C语言】【数据结构】【环形链表判断是否带环并返回进环节点】有数学推导加图解
用快慢指针slow指针一次走一步,fast指针一次走两步当两个指针相遇时,链表带环;两个指针不能相遇时,当fast走到倒数第一个节点或为空时,跳出循环返回空指针。fast永远比slow快一步,所以两者之间每走一次举例减少 1 即 N-1,N-2,N-3…0那么fast一次走三步,slow一次走一步呢?
2023-11-11 22:20:42
692
17
原创 【Leetcode】【数据结构】【C语言】判断两个链表是否相交并返回交点地址
【代码】【Leetcode】【数据结构】【C语言】判断两个链表是否相交并返回交点地址。
2023-11-08 22:44:15
405
2
原创 【Leetcode】【消失的数字】【C语言】
我们知道:按位异或^操作原则:相同为零,相异为一所以 0^a=a a ^a=0 a ^b=b ^atem1 ^ tem2时,相同的元素互相按位异或都会变成0,而消失的数字就会显现出来。
2023-11-01 17:32:56
296
3
原创 【C语言】【goto语句】复习捡拾~
goto 语句如果使⽤的不当,就会导致在函数内部随意乱跳转,打乱程序的执⾏流程,所以我们的建议是能不⽤尽量不去使⽤;但是 goto 语句也不是⼀⽆是处,在多层循环的代码中,如果想快速跳出使⽤ goto 就⾮常的⽅便了。break只能跳出一层循环,而goto能直接跳到指定位置。
2023-10-25 14:44:09
555
1
原创 【数据结构】【C语言】【环形链表 约瑟夫杀人游戏】
著名的Josephus问题据说著名犹太历史学家Josephus有过以下的故事:在罗⻢⼈占领乔塔帕特后,39 个犹太⼈与Josephus及他的朋友躲到⼀个洞中,39个犹太⼈决定宁愿死也不要被⼈抓到,于是决定了⼀个⾃杀⽅式,41个⼈排成⼀个圆圈,由第1个⼈开始报数,每报数到第3⼈该⼈就必须⾃杀,然后再由下⼀个重新报数,直到所有⼈都⾃杀⾝亡为⽌。然⽽Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与⾃⼰安排在。
2023-10-21 17:37:49
487
6
原创 【C语言】【动态内存管理】malloc,free,calloc,realloc
功能:向内存申请为 size大小的空间开辟成功:返回开辟好的空间开辟失败:返回空指针使用举例:(malloc和free要成对使用,举例放在free部分)
2023-10-03 19:40:25
1516
16
原创 【C语言】【结构体的位段】位段的内存分配及注意事项
1.A就是一个位段类型的变量,位表示比特位,意思是 A中的变量申请内存的比特位数比如 _a要占 2 个bit2.位段的成员必须是 int ,unsigned int ,signed int 类型的,在C99中段位成员可以有 char类型的。
2023-10-01 16:39:55
1203
3
原创 【C语言】【结构体的内存对齐】计算结构体内存大小,有图解
计算结构体内存大小,需要用到结构体内存对齐的知识两个结构体包含的变量类型相同,但计算出来的内存大小不同,这就说明两个结构体在内存中的存储方式不同。
2023-09-27 15:36:22
450
3
原创 【C语言】【数据存储】用%u打印char类型?用char存128?
u 是打印无符号整型-128原码:10000000…10000000补码:11111111…10000000(char类型占 1 个字节,8 个bit位)截断:10000000char 默认 signed char 所以高位补符号位:11111111…10000000%u 是打印无符号整型,那么补码 11111111…10000000 中第一个 1 不是符号位,此时原码与补码相同,打印出来的就是二进制11111111…10000000所代表的十进制数:4294967168。
2023-09-17 21:00:21
1954
5
原创 【C语言】【百度笔试】写一个代码判断当前机器的字节序(大小端)
大端:数据的高位字节内容保存到低地址处小端:数据的低位字节内容保存到低地址处以整型 1 为例:int 类型占 4 个字节:00 00 00 01 从左到右字节是高位到低位,而地址是从左到右,低位到高位即:整型 1 在内存中:大端:00 00 00 01小端:01 00 00 00。
2023-09-17 19:49:54
435
2
原创 【C语言】【strerro函数的使用】
错误码是整数,有时候很难理解是什么意思,strerro这个函数可以返回错误解释字符串的地址,进而可以把错误信息打印出来,便于理解。strerro函数可以把错误码对应的错误信息的字符串地址返回过来。错误码一般放在 <errno.h>这个头文件中。
2023-09-13 20:23:13
399
原创 【剑指offer】【C语言】调整数组中奇偶数顺序_冒泡法+二分法_调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分
输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
2023-08-20 15:51:53
930
3
空空如也
codeblocks
2024-01-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人