
《数据结构与算法✏️》
文章平均质量分 50
基础数据结构与算法的日常分享
Obito_TXP
所遇既所得
展开
-
Java LinkedList
链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。链表可分为单向链表和双向链表。一个单向链表包含两个值: 当前节点的值和一个指向下一个节点的链接。一个双向链表有三个整数值: 数值、向后的节点链接、向前的节点链接。Java LinkedList(链表) 类似于 ArrayList,是一种常用的数据容器。与 ArrayList 相比,LinkedList 的增加和删除的操作效率更高,而查找和修原创 2022-03-13 21:33:30 · 170 阅读 · 0 评论 -
Java 用short函数排序数组大小
public class MyDemo { public static void main(String[] args) { System.out.println("请输入数字:"); Scanner a=new Scanner(System.in); String str=a.next().toString(); String[]score=str.split(","); int [] b=new int[score.原创 2021-10-31 18:03:40 · 397 阅读 · 0 评论 -
C语言三色旗问题
有一根绳子,上面有红、白、蓝三种颜色的旗子。绳子上旗子的颜色并没有顺序,现在要对旗子进行分类,按照蓝色、白色、红色的顺序排列。只能在绳子上进行移动,并且一次只能调换两面旗子,怎样移动才能使旗子移动的次数最少?算法思想旗子在绳子上移动,而且一次只能调换两面旗子,因此只要保证在移动旗子时,从绳子的开头开始,遇到蓝色旗子向前移动,遇到白色旗子则留在中间,而遇到红色的旗子则向后移动。要使移动次数最少,可以使用三个指针b、w、r 分别作为蓝旗、白旗和红旗的指针。若 w 指针指向的当前旗子为白色,则 w 指.原创 2021-09-21 21:38:24 · 394 阅读 · 0 评论 -
C语言#define的用法,C语言宏定义
#define 叫做宏定义命令,它也是C语言预处理命令的一种。所谓宏定义,就是用一个标识符来表示一个字符串,如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串。我们先通过一个例子来看一下 #define 的用法:#include <stdio.h>#define N 100int main(){ int sum = 20 + N; printf("%d\n", sum); return 0;}运行结果:120注意第 6 行代码int su原创 2021-09-22 19:11:21 · 2065 阅读 · 0 评论 -
C++/C 冒泡排序法
C++:#include<iostream>using namespace std; int main(){ int a[5] = {}; for (int i = 0; i < 5; i++) { cin >> a[i]; } for (int i = 0; i < 4; i++) { for (int j = 0; j < 4 - i; j++) { if (a[j] > a[j + 1]) { .原创 2021-09-03 14:24:53 · 111 阅读 · 0 评论 -
C 语言判断闰年,即判断年份是否为闰年
实例要求从键盘输入任意年份的整数 N,通过程序运行判断该年份是否为闰年。算法思想判断任意年份是否为闰年,需要满足以下条件中的任意一个:① 该年份能被 4 整除同时不能被 100 整除;② 该年份能被400整除。本实例中使用嵌入式 if-else 语句。程序代码#include <stdio.h>int main(){ int year,a; printf("请输人年份:\n"); scanf("%d",&year); if(ye原创 2021-09-15 20:07:52 · 2036 阅读 · 0 评论 -
Java 三元运算符
?运算符是三元运算符。Java三元运算符基本上是简单的if语句的简写形式。语法?具有以下一般形式:expression1 ? expression2 : expression3expression1可以是计算为boolean值的任何表达式。如果expression1是true,那么将评估expression2。否则,将评估expression3。计算的表达式是?操作的结果。需要expression2和expression3来返回相同的类型,这可以是无...原创 2021-09-07 16:42:08 · 400 阅读 · 0 评论 -
C语言猴子吃桃问题(两种方法)
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将第一天剩下的桃子吃掉一半,有多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,发现只剩下一个桃子了。编写程序求猴子第一天摘了多少个桃子。实现过程:(1) 定义 day、x1、x2 为基本整型,并为 day 和 x2 赋初值 9 和 1。(2) 使用 while 语句由后向前推出第一天摘的桃子数。(3) 输出结果。(4) 程序代码如下:#include <std原创 2021-09-15 20:29:32 · 48104 阅读 · 2 评论 -
C语言选择排序算法
用选择排序法对一组数据由小到大进行排序,数据分别为 526、36、2、369、56、45、78、92、125、52。实现过程:(1) 程序中用到T两个for 循环语句。第一个 for 循环是确定位置的,该位置是存放每次从待排序数列中经选择和交换后所选出的最小数。第二个 for 循环是实现将确定位置上的数与后面待排序区间中的数进行比较的。(2) 程序代码如下:#include <stdio.h>int main(){ int i,j,t,a[11]; //定义变.原创 2021-09-19 15:25:43 · 233 阅读 · 0 评论 -
C/C++ B组第二场蓝桥杯省赛真题(第一题)
门牌制作:题目描述小蓝要为一条街的住户制作门牌号。这条街一共有2020位住户,门牌号从1到2020编号。小蓝制作门牌的方法是先制作0到9这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌1017需要依次粘贴字符1、0、1、7,即需要1个字符0,2个字符1,1个字符7。请问要制作所有的1到2020号门牌,总共需要多少个字符2?题目分析判断每一位上的数字是否为‘2’题目代码;#include<iostream>using namespace std;int calu(int原创 2021-09-12 16:52:47 · 163 阅读 · 0 评论 -
C语言求最大公约数
问题描述求任意两个正整数的最大公约数(GCD)。问题分析如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。根据约数的定义可知,某个数的所有约数必不大于这个数本身,几个自然数的最大公约数必不大于其中任何一个数。要求任意两个正整数的最大公约数即求出一个不大于其中两者中的任何一个,但又能同时整除两个整数的最大自然数。算法设计思路有两种:第一种,采用穷举法按从小到大(初值为原创 2021-09-19 12:33:00 · 213 阅读 · 0 评论 -
进制转换:二进制、八进制、十六进制、十进制之间的转换
将二进制、八进制、十六进制转换为十进制二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。假设当前数字是 N 进制,那么:对于整数部分,从右往左看,第 i 位的位权等于Ni-1 对于小数部分,恰好相反,要从左往右看,第 j 位的位权为N-j。更加通俗的理解是,假设一个多位数(由多个数字组成的数)某位上的数字是 1,那么它所表示的数值大小就是该位的位权。1) 整数部分例如,将八进制数字53627 转换成十进制:53627 =5×84+ ...原创 2021-09-22 19:15:35 · 1539 阅读 · 0 评论 -
用 1080p 的显示器放 4K 视频,图片有意义吗?
根据最新的 Steam 平台玩家设备统计数据,目前使用 4K 显示器的玩家不足 2%,分辨率高于 1080P 的玩家数量不足 10 %这是通常对设备要求比较高的游戏玩家们的数据,扩大范围到普通个人用户,4K显示器占比应该只低不高。但是如果你经常看电影的话(播放本地片源),会发现很多片源都提供4K分辨率,4K 片源往往会比 1080P 片源体积大出 4-10 倍不等。因为物理分辨率受限,所以在 1080P 的屏幕上播放 4K 片源最终输出的分辨率肯定还是 1080P 的。但是!原创 2022-04-03 15:18:10 · 6483 阅读 · 0 评论 -
Java 堆栈详解
1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)3. 堆:存放所有new出来的对象。4. 静态域:存放静态成员(static定义的)5. 常量池:存放字符串常量和基本类型常量(public static final)。6. 非RAM存储:硬盘等永久存储空间栈,堆和常量池,对于栈和常量池中的对象可以共享,对于堆中的对象不原创 2021-09-26 20:33:52 · 3099 阅读 · 0 评论 -
C语言日期函数,日期处理函数
定义一个表示日期的结构体类型,再分别定义函数完成下列功能:计算某一天是对应年的第几天,这一年一共多少天;计算两个日期之间相隔的天数。两个日期由键盘输入。算法思想设定结构体类型表示日期类型名为 Date,利用 typedef 将其定义为日期型类型名,有三个整型类型的成员分别表示年、月、日。设定函数计算输入的日期是这一年的第几天。函数的形参为日期型变量,函数体中设定整型数组存放每个月的天数,二月份的天数为 28 天;设定函数判断年份是否为闰年以决定二月份的天数。根据输入的日期月份,在数组中将相应的月份原创 2021-09-21 17:24:49 · 1801 阅读 · 0 评论 -
C语言sizeof函数解析
在 Pascal 语言中,sizeof() 是一种内存容量度量函数,功能是返回一个变量或者类型的大小(以字节为单位);在 C 语言中,sizeof() 是一个判断数据类型或者表达式长度的运算符。在Pascal 语言与C语言中,对 sizeof() 的处理都是在编译阶段进行。...原创 2022-08-17 17:05:45 · 3892 阅读 · 0 评论 -
C语言快速排序算法
用快速排序法对一组数据由小到大进行排序,数据分别为 99、45、12、36、69、22、62、 796、4、696。实现过程:(1)自定义一个函数 qusort(),实现快速排序。(2) main() 函数为程序的入口函数。程序代码如下:#include <stdio.h>int qusort(int s[],int start,int end) //自定义函数 qusort(){ int i,j; //定义变量为基本整型 i=start;原创 2021-09-19 15:24:31 · 941 阅读 · 0 评论 -
C++ “左圆右方”动画
#include <iostream>#include <graphics.h>DWORD WINAPI drawCircle(LPVOID lpParam) { double pi = 3.1415926; for (int i = 0; i < 800; i++) { int x = 200 + 100 * cos(i * pi / 400); int y = 200 + 100 * sin(i * pi / 400); putpixel(x, .原创 2021-09-04 13:42:22 · 149 阅读 · 0 评论 -
C语言求定积分
利用梯形法计算定积分其中, f(x)=x3+3x2-x+2。算法思想根据定积分的定义分析可得:[x0,x1],[x1,x2],···,[xn-1,xn],将定积分的区间 [a,b] 分成 n 个子区间,其中:若右边的极限存在,其极限值即为定积分的值。理论上区间分得越细,越逼近定积分实际的值,一般采用梯形法近似计算定积分的值,把区间 [a,6] 划分成 n 等份,则任意第 f 个小梯形的面积为 (上底+下底)×高/2,si=H×[f(xi)-1)+f(xi)]/2,其中 xi+1=a原创 2021-09-21 22:28:06 · 1938 阅读 · 0 评论 -
C语言字符串加密和解密算法
在本实例中要求设计一个加密和解密算法。在对一个指定的字符串加密之后,利用解密函数能够对密文解密,显示明文信息。加密的方式是将字符串中每个字符加上它在字符串中的位置和一个偏移值 5。以字符串“mrsoft”为例,第一个字符“m”在字符串中的位置为 0,那么它对应的密文是“'m'+0+5",即 r。算法思想在 main() 函数中使用 while 语句设计一个无限循环,并定义两个字符数组,用来保存,明文和密文字符串,在首次循环中要求用户输入字符串,进行将明文加密成密文的操作, 之后的操作则是根据用户输入原创 2021-09-21 20:15:59 · 1808 阅读 · 0 评论 -
CSS :hover的作用
:hover:hoverCSS伪类适用于用户使用指示设备虚指一个元素(没有激活它)的情况。这个样式会被任何与链接相关的伪类重写,像:link,:visited, 和:active等。为了确保生效,:hover规则需要放在:link和:visited规则之后,但是在:active规则之前,按照LVHA的循顺序声明:link-:visited-:hover-:active。:hover伪类可以任何伪元素上使用。用户的可视客户端比如Firefox, Internet Explorer, Safa...原创 2021-09-06 09:45:21 · 1444 阅读 · 0 评论 -
C语言判断三角形的类型
根据输入的三角形的三条边判断三角形的类型,并输出其面积和类型。算法思想首先判断其两边之和是否大于第三边,若大于则判断可以构成三角形,再进一步判断该三角形是什么三角形,并计算这个三角形的面积;否则不能构成三角形。① 从键盘输入三角形的三条边。② 判断两边之和是否大于第三边。③ 若条件成立则判断可构成三角形,计算其面积,并判断其类型;否则判断其不能构成三角形。④ 在类型判断中首先判断其是否三边相等,条件成立则判断其为等边三角形;否则判断其是否有两边相等,条件成立则判断其为等腰三角形;否则判断其是原创 2021-09-20 14:10:22 · 2055 阅读 · 0 评论 -
Java Scanner是否需要关闭
在idea中,尝试过不关闭Scanner,程序照样运行,可能对是否关闭资源占用要求不严,但是在vscode中,如果不关闭,就会出现以下错误凡是属于IO流的类如果不关闭会一直占用资源.要养成好习惯用完就关掉.就好像你接水完了要关水龙头一样.很多下载软件或者视频软件如果你不彻底关,都会自己上传下载从而占用资源,你就会觉得卡,这一个道理.关闭的方法也很简单,添加Scanner变量名+.close();...原创 2022-03-31 17:06:20 · 2587 阅读 · 0 评论 -
C语言归并排序算法
用归并排序法对一组数据由小到大进行排序,数据分别为 695、458、362、789、12、 15、163、23、2、986。实现过程:(1) 自定义函数 merge(),实现一次归并排序。(2) 自定义函数 merge_sort(),实现归并排序。(3) 程序代码如下:#include <stdio.h>int merge(int r[],int s[],int x1,int x2,int x3) //自定义实现一次归并样序的函数{ int i,j,k;原创 2021-09-19 15:27:11 · 225 阅读 · 0 评论 -
Python 运用pyaudio库去做一个固定采样率音频录制器
首先要去下载一个对应的pyaudio库的whl文件,目前最新版本是cp38的那个,如果版本太低是用不了的,下载好后在编译环境下的控制台输入pip install +whl文件路径+XXX.whl+回车# -*- coding: utf-8 -*-"""Spyder EditorThis is a temporary script file."""import pyaudioimport waveCHUNK=256#设置底缓存块的大小为256FORMAT=pyaudio.paInt.原创 2021-12-04 13:40:32 · 3406 阅读 · 0 评论 -
C/C++ B组第二场蓝桥杯省赛真题(第三题)
蛇形填数题目描述如下图所示,小明用从1开始的正整数“蛇形”填充无限大的矩阵。容易看出矩阵第二行第二列中的数是5。请你计算矩阵中第20行第20列的数是多少?1 2 6 7 15 …3 5 8 14 …4 9 13 …10 12 …11 …思路分析及代码实现方法1:这道题是一道填空题,然后我们可以通过观察找规律来得出答案通过观察发现:第一行第一列 : 1 1^2 + (1-1)^2 = 1第二行第二列: 5 2^2 + (2-1)^2 = 5第三行第三列: 13 3^2 + ..原创 2021-09-15 16:26:51 · 192 阅读 · 0 评论 -
C++/C for循环“水仙花数”
所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数,如:153就是一个水仙花数,153=1*1*1+5*5*5+3*3*3。C++:#include <iostream>using namespace std;int main(){ //定义三位数num,个位数sd,十位数td,百位数hd int num, sd, td, hd; //循环所有三位数 for( num=100 ;num<1000 ; num++ )原创 2021-09-03 14:33:09 · 5609 阅读 · 1 评论 -
C语言汉诺塔问题,用C语言实现汉诺塔
汉诺塔问题是指:一块板上有三根针 A、B、C。A 针上套有 64 个大小不等的圆盘,按照大的在下、小的在上的顺序排列,要把这 64 个圆盘从 A 针移动到 C 针上,每次只能移动一个圆盘,移动过程可以借助 B 针。但在任何时候,任何针上的圆盘都必须保持大盘在下,小盘在上。从键盘输入需移动的圆盘个数,给出移动的过程。算法思想对于汉诺塔问题,当只移动一个圆盘时,直接将圆盘从 A 针移动到 C 针。若移动的圆盘为 n(n>1),则分成几步走:把 (n-1) 个圆盘从 A 针移动到 B 针(借助 C原创 2021-09-21 22:29:48 · 204 阅读 · 0 评论 -
Java for each语句的用法
for each 循环语句的语法格式如下:for(类型 变量名:集合) { 语句块;}其中,“类型”为集合元素的类型,“变量名”表示集合中的每一个元素,“集合”是被遍历的集合对象或数组。每执行一次循环语句,循环变量就读取集合中的一个元素,其执行流程如图 1 所示。例 1假设有一个数组,采用 for 语句遍历数组的方式如下:// 声明并初始化数组int[] numbers = { 43, 32, 53, 54, 75, 7, 10 };System.out.原创 2022-04-01 23:28:16 · 419 阅读 · 0 评论 -
C语言求勾股数
问题描述求100以内的所有勾股数。所谓勾股数,是指能够构成直角三角形三条边的三个正整数(a,b,c)。问题分析根据“勾股数”定义,所求三角形三边应满足条件 a2+ b2= c2。可以在所求范围内利用穷举法找出满足条件的数。算法分析采用穷举法求解时,最容易想到的一种方法是利用3个循环语句分别控制变最a、b、c的取值范围,第1层控制变量a,取值范围是1〜100。在a值确定的情况下再确定b值,即第2层控制变量b,为了避免结果有重复现象,b的取值范围是a+1〜100。a、b的值已确定,利用..原创 2021-09-19 13:32:31 · 3725 阅读 · 0 评论 -
C语言狼追兔子问题
一只兔子躲进了 10 个环形分布的洞的某一个,狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找,也没有找到,就隔两个洞,到第六个洞去找,以后每次多隔一个洞 去找兔子……这样下去,结果一直找不到兔子,请问:兔子可能躲在哪个洞中?算法思想对于本实例中提到的问题,虽然是“兔子可能躲在哪个洞中”,但是在考虑算法时,需要知道的是狼会去哪个洞找兔子,狼第一次去的洞是第一个(表示为 pos1),第二次去的是第三个(pos3),把它去的洞的代码用数字表示出来,可以推导出狼去的洞的代码是: pos(i+1)=po原创 2021-09-20 15:49:15 · 1680 阅读 · 3 评论 -
CSS backdrop-filter 和filter两种高斯模糊的区别
1. dropback-filter:用法:直接作用于当前元素,当前元素及其父元素,或其背景都会被高斯模糊看到浏览器兼容列表详情,我以为webkit内核浏览器就能兼容此属性,可经测试以下情况并不支持:搜狗浏览器极速模式360浏览器极速模式,火狐浏览器也是不支持的,有以上要求的,就要慎用了/* 关键字值 */backdrop-filter: none;/* URL方式外链SVG filter */backdrop-filter: url(zxx.svg#filter);/* .原创 2021-09-06 09:07:38 · 1293 阅读 · 0 评论 -
C/C++ 循环结构之三种循环比较
while、do-while和for三种循环在具体的使用场合上是有区别的,如下:1、在知道循环次数的情况下更适合使用for循环;2、在不知道循环次数的情况下适合使用while或者do-while循环,如果有可能一次都不循环应考虑使用while循环,如果至少循环一次应考虑使用do-while循环。但是从本质上讲,while,do-while和for循环之间是可以相互转换的,如:小明被老师罚抄10次computer这个单词,分别用三种语法写:...原创 2021-09-04 13:38:19 · 865 阅读 · 0 评论 -
C语言矩阵转置
本实例是利用数组解决线性代数中的矩阵转置问题。设有一矩阵为 m×n 阶(即 m 行 n 列),第 i 行 j 列的元素是 a(i,j),需要将该矩阵转置为 n×m 阶的矩阵,使其中元素满足 b(j,i)=a(i,j)。算法思想由数学知识可知,将第一个矩阵的所有元素绕着一条从第一行第一列出发的右下角 45° 的射线做镜面反转,即可得到该矩阵的转置。程序代码#include <stdio.h>int main(){ int i,j,i1,j1,a[101][101],原创 2021-09-20 14:33:50 · 4361 阅读 · 0 评论 -
C语言求n的阶乘(n!)
从键盘输入一个数,求出这个数的阶乘,即 n!。算法思想首先要清楚阶乘定义,所谓 n 的阶乘,就是从 1 开始乘以比前一个数大 1 的数,一直乘到 n,用公式表示就是:1×2×3×4×…×(n-2)×(n-1)×n=n!具体的操作:利用循环解决问题,设循环变量为 i,初值为 1,i 从 1 变化到 n;依次让 i 与 sum 相乘,并将乘积赋给 sum。① 定义变量 sum,并赋初值 1。② i 自增 1。③ 直到 i 超过 n。程序代码#include <stdio.h>原创 2021-09-15 20:10:43 · 2900 阅读 · 0 评论 -
Java LinkedList
链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。链表可分为单向链表和双向链表。一个单向链表包含两个值: 当前节点的值和一个指向下一个节点的链接。一个双向链表有三个整数值: 数值、向后的节点链接、向前的节点链接。Java LinkedList(链表) 类似于 ArrayList,是一种常用的数据容器。与 ArrayList 相比,LinkedList 的增加和删除的操作效率更高,而查找和修原创 2022-04-02 14:22:21 · 172 阅读 · 0 评论 -
C++/C AS‖码字母大小写手动转换
C++:#include<iostream>using namespace std;int main(){ char a[5]; for(int i=0;i<5;i++) { cin >> a[i]; } for (int i = 0; i < 5; i++) { if(a[i]>=97&&a[i]<=122) { a[i] -= 32; } else if (a[i] >= 65&原创 2021-09-03 14:04:18 · 235 阅读 · 0 评论 -
C语言兔子生兔子问题
假设一对兔子的成熟期是一个月,即一个月可长成成兔,那么,如果每对成兔每个月都生一对小兔,一对新生的小兔从第二个月起就开始生兔子,试问从一对兔子开始繁殖,以后每个月会有多少对兔子?程序代码#include <stdio.h>int main(){ int i,tu1,tu2,tu3,m; tu1=1; tu2=1; printf("请输入月份数\n"); scanf("%d",&m); if(m==1||m==2) {原创 2021-09-20 15:05:37 · 2821 阅读 · 0 评论 -
Java Collections类:sort()升序排序、reverse()降序排序、copy()复制、fill()填充
Collections 类提供了许多操作集合的静态方法,借助这些静态方法可以实现集合元素的排序、填充和复制等操作。下面介绍 Collections 类中操作集合的常用方法。正向排序使用 Collections 类的静态方法 sort() 可以对集合中的元素进行升序排序。这要求列表中的所有元素都必须实现 Comparable 接口,而且所有元素都必须是使用指定比较器可相互比较的。sort() 方法主要有如下两种重载形式。void sort(List list):根据元素的自然顺序对集合中的元素进原创 2021-09-22 18:53:42 · 12833 阅读 · 1 评论 -
C语言杨辉三角(两种方法)
杨辉三角是我们从初中就知道的,现在,让我们用C语言将它在计算机上显示出来。在初中,我们就知道,杨辉三角的两个腰边的数都是 1,其它位置的数都是上顶上两个数之和。这就是我们用C语言写杨辉三角的关键之一。在高中的时候我们又知道,杨辉三角的任意一行都是的二项式系数,n 为行数减 1。也就是说任何一个数等于这个是高中的组合数。n 代表行数减 1,不代表列数减 1。如:第五行的第三个数就为 =6。现在我们按第一种思路来写:先定义一个二维数组:a[N][N],略大于要打印的行数。再令两边的数为 1,即当每行的第一原创 2021-09-15 20:25:27 · 1708 阅读 · 0 评论