插入排序,选择排序,冒泡排序,顺序搜索,二分搜索,迭代,求最大公因数,最小公倍数等简单模板

目录

1.排序

1.插入排序模板

2.冒泡排序模板

3.选择排序模板

2.搜索

1.顺序搜索

2.二分搜索

3.迭代

1.基础迭代

​编辑

4.求最大公因数,最小公倍数

1.最直接的方法

取巧一点

2.辗转相除法(欧几里得法)


1.排序

1.插入排序模板

插入排序就如同一副扑克牌,我们一张一张的开始摸牌,一张一张的放,找到相应的位置,让后面的牌往后挪一格,再把这个牌放到挪往后的这个空位上

#include<stdio.h>
#include<math.h>
#include<string.h>int main(){for(int i = 1; i <= 6; i++) scanf("%d",&a[i]);//摸6张牌,从小到大排序for(int i = 1; i <= 6; i++){int temp = a[i];//摸牌for(int j = i; j > 0&&a[j-1] > temp; j--){//从第i张牌开始比较,只要前一张牌比它大并且没比较到第一张牌就换位置a[j] = a[j+1];//往后挪一格}a[i] = temp;//新牌落位}return 0;
}

2.冒泡排序模板

冒泡排序

冒泡排序其实我之前写过一个模板

http://t.csdnimg.cn/ghWXo

这次多加点注释,讲的更详细

冒泡排序其实它的名字就十分的形象,就把每个元素都看作是一个泡泡,每次都比较泡泡的大小,如果那个泡泡更大,就让它到前面去,这样一遍又一遍的比较下去,使得泡泡成功变为从小到大的排序

借助动图理解

#include<stdio.h>
#include<math.h>
#include<string.h>int main(){int a[7];for(int i = 1; i <= 6; i++) scanf("%d",&a[i]);//将6个元素,从小到大排序for(int i = 1; i <= 5; i++){int flag = 0;//6个元素只用冒泡5次,或者说n个元素,冒泡n-1次//对于最后一次冒泡的时候,它后面的元素都已经比较好了for(int j = 1; j <= 6-i; j++){//6个元素要冒泡6-冒泡的次数//举个例子,三个数,第一次冒泡,要比较两次//对第二次来说,却只要比较一次就可以了if(a[j] > a[j+1]){//如果这个数比它的下一个数大,就交换位置int t = a[j+1];a[j+1] = a[j];a[j] = t;flag = 1;//flag有优化的作用,如果在进行完这个if后//flag仍然为0,说明一次比较都没有进行,即说明此时已经排序好了}}if(flag == 0) break;}for(int i = 1; i <= 6; i++) printf("%d ",a[i]);return 0;
}

3.选择排序模板

选择排序是找一个数组中最大的那个数,把它放在第一个位置,再从剩下的数中找到最大的放在第二个位置,以此类推,直到只有两个数,把这两个数中更大的放在倒数第二个位置,另外一个放在最后

#include<stdio.h>
#include<math.h>
#include<string.h>int main(){int a[7];for(int i = 1; i <= 6; i++) scanf("%d",&a[i]);for(int i = 1; i <= 5; i++){int k = i;//记录下标for(int j = k+1; j <= 6; j++){if(a[j] < a[k]) k = j;}//此时k为值最大的那个数的下标if(k!=i) {int t = a[k]; a[k] = a[i]; a[i] = t;}}for(int i = 1; i <= 6; i++) printf("%d ",a[i]);return 0;
}

2.搜索

1.顺序搜索

顺序搜索就是写个循环从头搜索到尾,效率很低

2.二分搜索

二分搜索就是对一个已经排序好的数组,不断的二分找我们要找的那个数字

http://t.csdnimg.cn/J6kJd

这是我之前写过的一个二分模板,这次写个更加规范的

#include<stdio.h>
#include<math.h>
#include<string.h>int main(){int a[] = {1,2,3,4,5,6,7,8,9,10};int left = 0,right = 9,mid,found;//left为第一个数的下标,也就是0//right为第二个数的下标,也就是1//mid为二分的那个值//found用来判断是否找到了,找到则为1found = 0;int x;scanf("%d",&x);//要找xwhile(left <= right && !found){mid = (left + right)/2;if(a[mid] > x) right = mid - 1;else if(a[mid] < x) left = mid + 1;else if(a[mid] == x) found = 1;}if(found == 1) printf("found");else printf("nofound");return 0;
}

3.迭代

1.基础迭代

#include<stdio.h>
const int N = 1e5 + 10;int main(){int a[N];int n,i;scanf("%d",&n);a[1] = 1,printf("%5d",a[1]);a[2] = 1,printf("%5d",a[2]);for( i = 3; i <= n;i++){a[i] = a[i - 1] + a[i - 2];printf("%5d",a[i]);}return 0 ;
}

4.求最大公因数,最小公倍数

最大公因数 的英文是 "Greatest Common Divisor"

最小公倍数 Least Common Multiple

以下用gcd代表最大公因数,用lcm代表最小公倍数

1.最直接的方法

让那两个数中更大的那个数一直加一,直到能被那两个数整除为止,得到的这个数就是最小公倍数

让那两个数中更小的那个数一直减一,直到那两个数能被这个数整除为止,得到的这个数就是最大公因数

#include<stdio.h>
#include<math.h>
#include<string.h>int lcm(int x,int y){int max = x>y?x:y;while(max%x != 0||max%y != 0) max++;//只要max不能同时被这两个数整除就加一return max;
}int gcd(int x,int y){int min = x < y?x:y;while(x % min != 0|| y % min != 0) min--;//直到那两个数能被这个数整除为止return min;
}
int main(){int x,y;scanf("%d%d",&x,&y);//找x和y的最小公倍数和最大公因数int lc,gc;lc = lcm(x,y);gc = gcd(x,y);printf("%d %d",lc,gc);return 0;
}

取巧一点

最小公倍数其实就是x乘y除以最大公因数

可以变成这样

#include<stdio.h>
#include<math.h>
#include<string.h>int gcd(int x,int y){int min = x < y?x:y;while(x % min != 0|| y % min != 0) min--;//直到那两个数能被这个数整除为止return min;
}int lcm(int x,int y){return x*y/gcd(x,y);
}int main(){int x,y;scanf("%d%d",&x,&y);//找x和y的最小公倍数和最大公因数int lc,gc;lc = lcm(x,y);gc = gcd(x,y);printf("%d %d",lc,gc);return 0;
}

2.辗转相除法(欧几里得法)

这是之前写的,现在写个更具模板化的

http://t.csdnimg.cn/s0mdb

#include<stdio.h>
#include<math.h>
#include<string.h>int gcd(int x,int y){int t;while(y){t = x % y;x = y;y = t;}return x;
}int lcm(int x,int y){return x*y/gcd(x,y);
}int main(){int x,y;scanf("%d%d",&x,&y);//找x和y的最小公倍数和最大公因数int lc,gc;lc = lcm(x,y);gc = gcd(x,y);printf("%d %d",lc,gc);return 0;
}

辗转相除法,也称为欧几里得算法,是一种用于计算两个正整数最大公约数(Greatest Common Divisor, GCD)的古老而有效的算法。它的基本原理是利用了数学中的一个重要定理:对于任意两个整数a和b(假设a>b),它们的最大公约数与b和a除以b的余数c的最大公约数相同,即gcd(a, b) = gcd(b, c)。

以下是一个例子来说明辗转相除法的原理:

假设我们要找到15750和27216的最大公约数。

1. 首先,我们将较大的数27216除以较小的数15750,得到商1和余数11466(27216 = 1 × 15750 + 11466)。

2. 然后,我们将上一步的除数15750作为新的被除数,余数11466作为新的除数进行下一轮计算。将15750除以11466,得到商1和余数4284(15750 = 1 × 11466 + 4284)。

3. 接着,我们将上一步的除数11466作为新的被除数,余数4284作为新的除数进行下一轮计算。将11466除以4284,得到商2和余数3198(11466 = 2 × 4284 + 3198)。

4. 再次交换被除数和除数,将4284作为新的被除数,3198作为新的除数。将4284除以3198,得到商1和余数1086(4284 = 1 × 3198 + 1086)。

5. 继续这个过程,将3198作为新的被除数,1086作为新的除数。将3198除以1086,得到商3和余数22(3198 = 3 × 1086 + 22)。

6. 最后,将1086作为新的被除数,22作为新的除数。将1086除以22,得到商49和余数0(1086 = 49 × 22 + 0)。

由于我们已经得到了余数为0,这意味着当前的除数22就是原问题中两个数15750和27216的最大公约数。

所以,15750和27216的最大公约数为22。这就是辗转相除法的原理和一个实际应用的例子。通过反复进行除法和交换除数和余数的操作,直到余数为0,最后的除数就是两个原始数的最大公约数。

不会写?不要怕!

和我一起念口诀歪踢尔科斯歪尔科斯y,t,x,y,x,(

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/580456.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ES慢查询分析——性能提升6 倍

问题 生产环境频繁报警。查询跨度91天的数据&#xff0c;请求耗时已经来到了30s。报警的阈值为5s。 背景 查询关键词简单&#xff0c;为‘北京’ 单次仅检索两个字段 查询时间跨度为91天&#xff0c;覆盖数据为450亿数据 问题分析 使用profle分析&#xff0c;复现监控报警的…

PSV新内存卡(或内存卡格式化后)如何安装VITASHELL文件管理器

本博文适合PSV破解固化后的系统&#xff0c;例如变革3.65破解固化后换新的内存卡&#xff0c;或者内存卡格式化后如何在内存卡上安装文件管理器&#xff08;没有文件管理器无法安装游戏&#xff09;。如果你的PSV还没破解&#xff0c;那本文不适合没破解的情况&#xff0c;按照…

ElasticSearch 的 mapping 参数 - fields

概要 在 es 中&#xff0c;一个字段可能运用于不同的场景&#xff0c;但是某个字段类型的使用场景是有局限的 下面&#xff0c;我们先来看一段 es 查询语句&#xff1a; $must ["bool" > ["should" > [["range" > ["user_id.r…

视觉学习(7) —— 接收数据和发送数据以及全局变量和浮点数

1、前提 创建一个四个字节的地址 2、发送数据 &#xff08;1&#xff09;直接发送数据 再观察地址里的值 与我们想要值不一样 输入0&#xff0c;而实际值则为 结论&#xff1a;直接输入值到地址&#xff0c;值会发生变化 &#xff08;2&#xff09;走全局变量发送数据 添加全…

系列十(实战)、发送 接收批量消息(Java操作RocketMQ)

一、发送 & 接收批量消息 1.1、概述 批量消息是指RocketMQ可以把一组消息集合一次性发送&#xff0c;这一组消息会被当做一个消息供消费者消费。 1.2、Demo05MQTestApp /*** Author : 一叶浮萍归大海* Date: 2023/12/25 11:48* Description: 发送 & 接收批量消息*/ …

基于SSM实现的电动汽车充电网点管理系统

一、系统架构 前端&#xff1a;jsp | jquery | bootstrap | css 后端&#xff1a;spring | springmvc | jdbc 环境&#xff1a;jdk1.8 | mysql 二、代码及数据库 三、功能介绍 01. web端-首页 02. web端-登录 03. web端-注册 04. web端-我要充电 05. web端-个人中心-消…

搞定Apache Superset

踩雷了无数次终于解决了Superset的一系列问题 现在是北京时间2023年12月27日&#xff0c;亲测有效。 Superset概述 Apache Superset是一个现代的数据探索和可视化平台。它功能强大且十分易用&#xff0c;可对接各种数据源&#xff0c;包括很多现代的大数据分析引擎&#xff…

k8s面试之——简述网络模型

kubernetes网络模型是kubernetes集群中管理容器网络通信的一种机制&#xff0c;用于实现pod间、pod与外部网络间的通信和互联&#xff0c;并提供了多种网络插件和配置选项来满足不同应用场景下的需求。kubernetes网络模型可以分为一下几个部分&#xff1a; 1. pod网络模型 在…

详解结构体(包含结构体内存对齐,柔性数组,位段)【尊嘟很详细】

​ 结构体 结构体是一些值的集合&#xff0c;这些值称为成员变量&#xff0c;结构的成员可以是标量、数组、指针,甚至是其他结构体。 成员名可以与程序中其它变量同名&#xff0c;互不干扰。 结构体的定义 &#xff08;struct结构名{}&#xff09; struct books {int a;c…

饮用水除溴酸盐和硝酸盐中的应用与优势

随着人们对健康和生活质量的日益关注&#xff0c;饮用水安全问题成为了社会关注的焦点。在自然水体中&#xff0c;溴酸盐和硝酸盐的含量往往较高&#xff0c;而这些物质对人体健康存在一定的潜在风险。因此&#xff0c;饮用水处理中如何有效去除溴酸盐和硝酸盐&#xff0c;成为…

TypeScript下载安装,编译运行

TypeScript是拥有类型的JavaScript超集&#xff0c;它可以编译成普通、干净、完整的JavaScript代码。 简单理解&#xff1a;TypeScript就是加强版的JavaScript。 TypeScript最终会被编译成JavaScript代码&#xff0c;那么我们必然需要对应的编译环境 环境搭建前提&#xff1a…

【扩散模型】7、GLIDE | 文本指引的图像生成和编辑

论文&#xff1a;GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models 代码&#xff1a;https://link.zhihu.com/?targethttps%3A//github.com/openai/glide-text2im 出处&#xff1a;OpenAI 一、背景 在扩散模型经过了一系列…

【51单片机系列】DS1302时钟模块

本文是关于DS1302时钟芯片的相关介绍。 文章目录 一、 DS1302时钟芯片介绍二、DS1302的使用2.1、DS1302的控制寄存器2.2、DS1302的日历/时钟寄存器2.3、片内RAM2.4、DS1302的读写时序 三、SPI总线介绍四、DS1302使用示例 一、 DS1302时钟芯片介绍 DS1302是DALLAS公司推出的涓流…

GitLab 删除或移动项目

首先明说&#xff0c;删除后无法恢复 第一步&#xff1a;找到要删除的项目 第二步&#xff1a;进入目录后&#xff0c;左侧菜单&#xff0c;设置 >>> 通用&#xff0c;拉到最下面找到“高级”&#xff0c;点击右侧“展开” 第三步&#xff1a;点击“展开”后往下拉&a…

CSS 文字弹跳效果

鼠标移过去 会加快速度 <template><div class"bounce"><p class"text" :style"{animationDuration: animationDuration}">欢迎使用UniApp Vue3&#xff01;</p></div> </template><script> export d…

ArcGIS渔网的多种用法

在ArcGIS中有一个渔网工具&#xff0c;顾名思义&#xff0c;可以用来创建包含由矩形像元所组成网络的要素类。不太起眼&#xff0c;但它的用途却有很多&#xff0c;今天跟大家分享一篇关于渔网的多种用途。 1.马赛克地图制作 2.基于网格的设施密度统计制作马赛克地图 准备材…

牙齿敏感困扰?试试清九野小红盾牙膏

随着冬季的来临&#xff0c;许多人可能会面临牙齿敏感的问题。在这个时候&#xff0c;食用冷饮都会让牙齿感到非常酸痛。一般来说&#xff0c;不良的饮食习惯和不正确的刷牙方式&#xff0c;都会导致牙齿敏感&#xff0c;但根本还是牙本质小管的暴露和空洞&#xff0c;需要修复…

家校互通小程序实战开发02首页搭建

目录 1 创建应用2 搭建首页总结 我们上一篇介绍了家校互通小程序的需求&#xff0c;创建了对应的数据源。有了这个基础的分析之后&#xff0c;我们就可以进入到开发阶段了。开发小程序&#xff0c;先需要创建应用。 1 创建应用 登录控制台&#xff0c;点击创建应用&#xff0c…

File Inclusion(Pikachu)

File Inclusion(local) 这里随便点击一个提交 观察url&#xff0c;显示是一个文件file1.php 可以直接通过url修改这个文件 找到自己的文件&#xff08;本地文件&#xff09;shell.php的路径写上去 就可以看到 File Inclusion&#xff08;remote&#xff09; 提交的是一个目标…

C#教程(四):多态

1、介绍 1.1 什么是多态 在C#中&#xff0c;多态性&#xff08;Polymorphism&#xff09;是面向对象编程中的一个重要概念&#xff0c;它允许不同类的对象对同一消息做出响应&#xff0c;即同一个方法可以在不同的对象上产生不同的行为。C#中的多态性可以通过以下几种方式实现…