- 博客(22)
- 收藏
- 关注
原创 mysql同步两个环境的数据库表备注
在mysql数据库中存在一个information_scheam数据库用于存储数据库元数据(关于数据的数据),例如数据库名、表名、列的数据类型、访问权限等。information_schema中的表实际上是视图,而不是基本表,因此,文件系统上没有与之相关的文件。
2024-09-29 16:53:30
331
原创 Spring Data JPA
解释,当指定主键后,save方法会执行两个操作,先select查询一遍数据库,如果没找到则全部执行insert方法, 若找到数据则执行update操作,注意这种操作比较危险,实体类中没有set数据的属性,会被全部重置为null。二,指定了一条不存在的数据,主键不存在的数据,比如数据库只有22条数据,指定主键为23,数据库中不包含主键23的数据,所以底层会执行insert方法。delete操作时,底层也是执行两个操作,先查询,再删除,若是未查询到数据,则不执行任何操作,找到数据则执行delete方法。
2023-10-17 17:22:29
156
原创 动态规划-(0-1)背包问题
下面我用容积代表重量(我是不会承认我看走眼了的。又懒得改。)0-1背包问题是动态规划背包问题系列的最基础的一个问题。相对理解起来较为简单。按书上来说,要证明一个问题是否可以使用动态规划思想,需要满足最优子结构的性质,那么什么是最优子结构的性质呢?书上给出的定义如下图看起来很拗口,其实就是不论过去状态和决策如何,对前面的决策所形成的状态而言,余下的诸决策必须构成最优策略。说白了就是一个最优策略的子策略也是必须是最优的,而所有子问题的局部最优解将导致整个问题的全局最优。
2022-10-29 10:52:57
15559
2
原创 查找算法-折半查找(二分查找)
二分查找算法,又叫折半查找算法,顾名思义,从其名字可见该排序算法运用了二分法进行查找。所谓二分就是将一个数组分成两部分,因为每次都是二分所以又叫折半查找,个人觉得折半很形象。
2022-10-28 13:05:38
1464
原创 排序算法-总结(c语言)
时间复杂度我看网上说法不一也不一定准确。稳定性是指例如6 8 9 0 5 5 7 这种有重复数字的数组进行排序时能不能分辨哪个5排在前面。这十种排序算法并没有都完全学习,但是大概内部分为了几种分类想法,1.冒泡排序,选择排序,堆排序,这三种排序方法比较相像,其具体思想就是找到最大值然后将最大值(最小值)放在特定的位置,然后再寻找剩余数中的最大值最小值。2.桶排序,计数排序,基数排序,这三种算法是比较相像,其具体思想都超脱于一种桶的构型。就是将符合一定条件的数放在一起。但对桶的使用方法上有明显差异。
2022-10-19 16:13:51
893
原创 排序算法-基数排序(C语言)
基数排序有两种思路,从高位往低位排,和从低位往高位排,本文主要是从低位往高位排。总之就是先将个位进行排序,将每个数字的个位数放入对应的桶中,然后依次返还给数组,那么个位上的数字就已经按照从大到小排好了,然后再排十位上的数字,依次排到数组中最大数的最大数位那么所有的数字就排好了。
2022-10-18 13:47:37
1113
原创 排序算法-堆排序(C语言版)
堆排序是一种基于完全二叉树结构的一种排序算法,其整体思想很简单,就是构建完全二叉树,但是这里需要引入堆的概念。如下大顶堆:每个结点的值都大于或等于其左右孩子结点的值小顶堆:每个结点的值都小于或等于其左右孩子结点的值大概就是下图的样子 细心的同学可能已经发现了,堆只保证根节点与子节点的关系,并不保证子节点与子节点的关系。是不是很疑惑这种数据构型怎么能用于排序,其实很简单,我们只需要利用节点特性然后不停的重构就可以达到排序的目的。只需要不停的将根节点就是最上面的那个节点的数据不停的取出,然后重构堆,就可以实现排
2022-10-16 14:15:07
1229
4
原创 排序算法-归并排序(C语言)
归并排序是一种基于分治思想的排序算法,归并排序主要有两个操作,分别是归和并这两种操作,归就是递归,并就是合并的意思。归并排序一共有两种实现方法,一种是自下而上递归,一种是自上而下递归。
2022-10-14 15:27:55
1048
原创 排序算法-希尔排序(c语言)
以数组 5 2 10 4 7 1 3 8 6 9 为例,数组长度为10,及在这一步一共分为5组。对比间隔为5,然后5->1,2->3,10->8,4->6,7->9 进行比较然后相应的交换位置。2.现在进行第二趟排序,5/2=2,现在对比间隔为2,一共分为5组,则1->8,2->4 .... 依次类推。3.现在进行第三轮,2/2=1,现在对比间隔为1,一共分为10组,则 1->2,2->7 ...... 依次类推。总之这个算法就是从数组长度确定的对比间隔,然后每一轮除2一直除到为1这一轮就排好了。
2022-10-12 15:25:15
481
原创 排序算法-插入排序(C语言)
大概意思是先将数组的第一个数据当做已经排好了的数据,后面的所有数据都还没有排好顺序,然后依次遍历,找到对应的位置直接交换位置即可。光说估计比较抽象,上图。插入排序是一个很有意思的排序算法,就跟斗地主的整理卡牌的过程差不多。
2022-10-11 08:36:19
251
原创 排序算法-冒泡排序
这里引用了一种新的计算数组长度的方式,我本想用strlen计算数组长度,但是发现计算不出来,因为strlen只能计算字符串数组的长度,那么int型数组就需要用到sizeof这个方式计算,sizeof能计算变量或者数据类型所占用的内存(以字节为单位)。用sizeof计算数组长度时,sizeof不关心数组内部存储的是什么类型的数据。其中“sizeof(a)“计算了整个数组a占据了多少内存(字节为单位),”sizeof(a[0])“计算了数组中第一个元素所占多少字节,两者相除就是数组的长度。
2022-10-09 17:12:47
177
原创 排序-快排算法(C语言)
其基本思想就是从基准数右边找到一个比基准输小的,然后从基准数左边找到一个比基准熟大的然后交换位置,最终使得基准数的左边全部是比基准数小的,右边全是比基准数大的。(咳咳,我也不会,我感觉也不会用到,做算法比赛时起码不会遇见,遇见了手打冒泡也行。排序double和char型时只需要将cmp参数里的类型换一下即可,以char为例。C语言快排函数包含在stdlib.h头文件中,函数一共有四个参数。然后通过递归操作就会使其按序排列,但是此算法缺点是不稳定。
2022-10-03 16:55:11
225
原创 十六进制转十进制(包含十转二)(C语言版)(未完全AC)
明显可见红色部分,存在数字和字母,那么我们只需要将相应字符对应的ASCII码值相减就可以得到一个数字,假设现在这个字符是5那么我们用其对应的十进制码值减去0对应的十进制码值就可以得到5,就是原本的数字大小,同理字母也可以如此计算比如字符F,用其码值减去A的码值就会得到5,再加上10就可以表示十六进制中的15,同样可以用此方法来判定是不是字母还是数字,字母的ASCII码值较大与0的码值相减不可能在10的范围内就可以通过这样判定是否是数字。推测是因为数据过大的原因,或者精度遗失。接下来说说十进制转二进制。
2022-10-02 10:59:10
830
2
原创 试题 算法提高 学生节(C语言版)(官网测试通过)
问题 贵系一年一度的学生节要开始了!!! 这次学生节的节目一共有n个,由于贵系人才辈出,n貌似可能很大的样子哦…… 有一名小尚同学,由于他是从数学系转来贵系的,所以他被学生会主席马总勒令只能观看m个节目。 小尚同学在失望之余,从体育苦力部的翔副主席那里偷来了一份节目单,并给每个节目都作了价值评估。 他又发现学生节貌似要搞到很晚很晚,要是全看完的话就不能去洗澡了,这多么悲伤啊! 于是他规定了一个自己能看的最晚的节目号(小尚同学说他洗澡的时
2022-03-16 15:00:58
384
原创 试题 基础练习 数列排序(快速排序算法)(C语言)(官网测试通过)
问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200输入格式 第一行为一个整数n。 第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。输出格式 输出一行,按从小到大的顺序输出排序后的数列。样例输入58 3 6 4 9样例输出3 4 6 8 9老规矩先上代码。# include <stdio.h>void kuaipai(int *,int ,int );void j...
2022-03-13 16:57:12
2091
原创 试题 算法提高 秘密行动(C语言版)(官网测试已通过)
问题描述 小D接到一项任务,要求他爬到一座n层大厦的顶端与神秘人物会面。这座大厦有一个神奇的特点,每层的高度都不一样,同时,小D也拥有一项特殊能力,可以一次向上跳跃一层或两层,但是这项能力无法连续使用。已知向上1高度消耗的时间为1,跳跃不消耗时间。由于事态紧急,小D想知道他最少需要多少时间到达顶层。输入格式 第一行包含一个整数n,代表楼的高度。 接下来n行每行一个整数ai,代表i层的楼层高度(ai <= 100)。输出格式 输出1行,包含一个整数,表示所需的最短时间。.
2022-01-18 13:48:46
480
原创 试题 算法训练 YBH数数(C语言版)
问题描述 YBH数学很差,她数数时分不清4,5和8;我们定义YBH[i]为YBH的计数法对应的i的值。 规定:YBH[4] = 5,YBH[5] = 8;YBH[i]运算规则如下: ① YBH[i+j] = YBH[i] + YBH[j] ② YBH[i*j] = YBH[i] * YBH[j] 我们会发现,用不同方法算出的YBH[i]的值是不同的,例如:当i=20时, YBH[20] = 5*YBH[4] = 25; YBH[20] = 4*YBH[5] = 32; Y.
2022-01-16 16:27:01
1149
原创 试题 算法训练 印章(C语言版)(官网测试已通过)
问题描述 共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。输入格式 一行两个正整数n和m输出格式 一个实数P表示答案,保留4位小数。样例输入2 3样例输出0.7500 话不多说先上代码#include <stdio.h>#include <stdlib.h>int main(){ int n,m;//m<20(张 n>=1(种 scanf("%d %d.
2022-01-10 16:56:09
4544
14
原创 试题 算法训练 拿金币(C语言版)(官网测试已通过)
问题描述 有一个N x N的方格,每一个格子都有一些金币,只要站在格子里就能拿到里面的金币。你站在最左上角的格子里,每次可以从一个格子走到它右边或下边的格子里。请问如何走才能拿到最多的金币。输入格式 第一行输入一个正整数n。 以下n行描述该方格。金币数保证是不超过1000的正整数。输出格式 最多能拿金币数量。样例输入31 3 32 2 23 1 2样例输出11数据规模和约定 n<=1000首先展示我的代码:#include <
2022-01-10 10:37:20
4115
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人