MT1401-MT1410 码题集 (c 语言详解)
目录
MT1401·归并排序
MT1402·堆排序
MT1403·后3位排序
MT1404·小大大小排序
MT1405·小大大小排序II
MT1406·数字重排
MT1407·插入
MT1408·插入
MT1409·旋转数组
MT1410·逆时针旋转数组
MT1401·归并排序

c 语言实现代码
#include <stdio.h>// merge two subarrays
void merge(int arr[], int left, int mid, int right) {int i, j, k;int n1 = mid - left + 1; // left sonArrayint n2 = right - mid; // right sonArray// create new arrayint L[n1], R[n2];for (i = 0; i < n1; i++) {L[i] = arr[left + i];}for (j = 0; j < n2; j++) {R[j] = arr[mid + 1 + j];}i = 0;j = 0;k = left;while (i < n1 && j < n2) {if (L[i] <= R[j]) {arr[k] = L[i];i++;} else {arr[k] = R[j];j++;}k++;}while (i < n1) {arr[k] = L[i];i++;k++;}while (j < n2) {arr[k] = R[j];j++;k++;}
}void mergeSort(int arr[], int left, int right) {if (left < right) {int mid = left + (right - left) / 2;mergeSort(arr, left, mid);mergeSort(arr, mid + 1, right);merge(arr, left, mid, right);}
}int main() {int arr[10];for (int i = 0; i < 10; i++) {scanf("%d", &arr[i]);}mergeSort(arr, 0, 10 - 1);for (int i = 0; i < 10; i++) {printf("%d ", arr[i]);}return 0;
}
MT1402·堆排序
c 语言实现代码
#include <stdio.h>// swap two element vlaue
void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;
}void heapify(int arr[], int n, int i) {int largest = i; // root 节点int left = 2 * i + 1; // 左子节点int right = 2 * i + 2; // 右子节点if (left < n && arr[left] > arr[largest]) {largest = left;}if (right < n && arr[right] > arr[largest]) {largest = right;}if (largest != i) {swap(&arr[i], &arr[largest]);heapify(arr, n, largest);}
}void heapSort(int arr[], int n) {for (int i = n / 2 - 1; i >= 0; i--) {heapify(arr, n, i);}for (int i = n - 1; i >= 0; i--) {swap(&arr[0], &arr[i]);heapify(arr, i, 0);}
}int main() {int arr[10];for (int i = 0; i < 10; i++) {scanf("%d", &arr[i]);}heapSort(arr, 10);for (int i = 0; i < 10; i++) {printf("%d ", arr[i]);}return 0;
}
MT1403·后3位排序
c 语言代码实现
#include <stdio.h>
#include <stdlib.h>
#define N 10int compare(const void *a, const void *b) {int num1 = *(int *)a;int num2 = *(int *)b;int last_1 = num1 % 1000;int last_2 = num2 % 1000;if (last_1 != last_2) {return last_1 - last_2;} else {return num2 - num1;}
}int main() {int numbers[N];for (int i = 0; i < N; i++) {scanf("%d", &numbers[i]);}qsort(numbers, N, sizeof(10), compare);for (int i = 0; i < N; i++) {printf("%d ", numbers[i]);}return 0;
}
MT1404·小大大小排序

c 语言代码实现
#include <stdio.h>
#include <stdlib.h>#define SIZE 10// 升序排序的比较函数
int ascending(const void *a, const void *b) { return (*(int *)a - *(int *)b); }// 反转函数 用于将下标N到M的元素反转
void reverse(int arr[], int start, int end) {while (start < end) {int temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}
}int main() {int arr[SIZE];int N, M;for (int i = 0; i < SIZE; i++) {scanf("%d", &arr[i]);}scanf("%d %d", &N, &M);// 对整个数组进行升序排序qsort(arr, SIZE, sizeof(int), ascending);// 反转下标 N 到 M 的部分reverse(arr, N, M);for (int i = 0; i < SIZE; i++) {printf("%d ", arr[i]);}return 0;
}
MT1405·小大大小排序II

c 语言代码实现
#include <stdio.h>
#include <stdlib.h>#define SIZE 10// 升序排序的比较函数
int ascending(const void *a, const void *b) { return (*(int *)a - *(int *)b); }// 反转函数 用于将下标N到M的元素反转
void reverse(int arr[], int start, int end) {while (start < end) {int temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}
}int main() {int arr[SIZE];int N;for (int i = 0; i < SIZE; i++) {scanf("%d", &arr[i]);}scanf("%d", &N);// 对整个数组进行升序排序qsort(arr, SIZE, sizeof(int), ascending);// 反转下标 N 到 M 的部分reverse(arr, N, SIZE - 1);for (int i = 0; i < SIZE; i++) {printf("%d ", arr[i]);}return 0;
}
MT1406·数字重排

这道题 c 案例一直出问题 有解决的可以在评论区d我
c 语言实现
#include <stdio.h>
#include <stdbool.h>// 去重函数:从数组a中去重,结果存入数组b,返回去重后的长度
int del(int a[], int b[], int n) {int c = 0;for (int i = 0; i < n; i++) {bool flag = true;for (int j = 0; j < c; j++) {if (a[i] == b[j]) { // 如果a[i]已在b中,设置标志为falseflag = false;break;}}if (flag) { // 如果a[i]不在b中,加入bb[c++] = a[i];}}return c;
}// 排序函数
void sort(int arr[], int len) {for (int i = 0; i < len - 1; i++) {for (int j = 0; j < len - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}int main() {int a, b, c, len = 0;// 输入三个数字scanf("%d %d %d", &a, &b, &c);int A[6], B[6];A[len++] = a * 100 + b * 10 + c;A[len++] = a * 100 + c * 10 + b;A[len++] = b * 100 + a * 10 + c;A[len++] = b * 100 + c * 10 + a;A[len++] = c * 100 + a * 10 + b;A[len++] = c * 100 + b * 10 + a;// 去重int newLen = del(A, B, len);// 排序sort(B, newLen);// 输出结果for (int i = 0; i < newLen; i++) {printf("%d\n", B[i]);}return 0;
}
MT1407·插入

c 语言实现代码
#include <stdio.h>
#define SIZE 10void sort(int arr[], int len) {for (int i = 0; i < len - 1; i++) {for (int j = 0; j < len - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}int insertPoistion(int arr[], int len, int n) {int left = 0;int right = len - 1;while (left <= right) {int mid = (left + right) / 2;if (arr[mid] < n) {left = mid + 1;} else {right = mid - 1;}}return left;
}int main() {int arr[SIZE + 1], n;for (int i = 0; i < SIZE; i++) {scanf("%d", &arr[i]);}scanf("%d", &n);sort(arr, SIZE);int pos = insertPoistion(arr, SIZE, n);for (int i = SIZE; i > pos; i--) {arr[i] = arr[i - 1];}arr[pos] = n;for (int i = 0; i <= SIZE; i++) {printf("%d ", arr[i]);}return 0;
}
MT1408·插入

c 语言代码实现
#include <stdio.h>int insertPosition(int arr[], int len, int n) {int left = 0;int right = len - 1;while (left <= right) {int mid = (left + right) / 2;if (arr[mid] < n) {left = mid + 1;} else {right = mid - 1;}}return left;
}int main() {int N;int array[N + 1];int insertNumber;scanf("%d", &N);for (int i = 0; i < N; i++) {scanf("%d", &array[i]);}scanf("%d", &insertNumber);int pos = insertPosition(array, N, insertNumber);for (int i = N; i > pos; i--) {array[i] = array[i - 1];}array[pos] = insertNumber;for (int i = 0; i < N + 1; i++) {printf("%d ", array[i]);}return 0;
}
MT1409·旋转数组
c 语言代码实现
#include <stdio.h>void rotate_array(int arr[], int length, int n) {// 处理 N 的值,确保在有效范围内n = n % length; // 处理 N 大于数组长度的情况if (n < 0) {n += length; // 将负数旋转转换为正数旋转}// 创建一个临时数组来存储旋转后的结果int temp[length];// 进行旋转for (int i = 0; i < length; i++) {temp[(i + n) % length] = arr[i];}// 将结果复制回原数组for (int i = 0; i < length; i++) {arr[i] = temp[i];}
}int main() {int arr[10];int n;// 输入整型元素for (int i = 0; i < 10; i++) {scanf("%d", &arr[i]);}// 输入旋转次数 Nscanf("%d", &n);// 旋转数组rotate_array(arr, 10, n);// 输出结果for (int i = 0; i < 10; i++) {printf("%d", arr[i]);if (i < 9) {printf(" "); // 输出空格分隔}}printf("\n");return 0;
}
MT1410·逆时针旋转数组

c 语言实现代码
#include <stdio.h>void rotateArrayCounterClockwise(int array[], int N, int M) {M = M % N; // 计算有效的旋转次数int result[N];// 将前 M 个元素放在新数组的末尾for (int i = 0; i < N - M; i++) {result[i] = array[M + i];}// 将前 M 个元素移动到新数组的开头for (int i = 0; i < M; i++) {result[N - M + i] = array[i];}// 将新数组的内容复制到原数组for (int i = 0; i < N; i++) {array[i] = result[i];}
}int main() {int N, M;scanf("%d %d", &N, &M);int array[N];for (int i = 0; i < N; i++) {scanf("%d", &array[i]);}rotateArrayCounterClockwise(array, N, M);for (int i = 0; i < N; i++) {printf("%d ",array[i]);}return 0;
}相关文章:
MT1401-MT1410 码题集 (c 语言详解)
目录 MT1401归并排序 MT1402堆排序 MT1403后3位排序 MT1404小大大小排序 MT1405小大大小排序II MT1406数字重排 MT1407插入 MT1408插入 MT1409旋转数组 MT1410逆时针旋转数组 MT1401归并排序 c 语言实现代码 #include <stdio.h>// merge two subarrays void merge(int a…...
React基础语法
1.React介绍 React由Meta公司开发,是一个用于构建Web和原生交互界面的库 1.1 React优势 相较于传统基于DOM开发的优势 1.组件化的开发方式 2.不错的性能 相较于其他前端框架的优势 1.丰富的生态 2.跨平台支持 1.2React的时长情况 全球最流行,大厂…...
《Kadane‘s Algorithm专题:最大和连续子数组》
🚀 博主介绍:大家好,我是无休居士!一枚任职于一线Top3互联网大厂的Java开发工程师! 🚀 🌟 在这里,你将找到通往Java技术大门的钥匙。作为一个爱敲代码技术人,我不仅热衷…...
Vue基础(5)
ref属性 在 Vue2 中,ref是一个特殊的属性,用于在模板中获取对某个 DOM 元素或子组件的引用。通过 ref,我们可以在 JavaScript 代码中直接访问该 DOM 元素或组件实例。 示例: <template><div><input ref"inputField&quo…...
面对复杂的软件需求:5大关键策略!
面对软件需求来源和场景的复杂性,有效地管理和处理需求资料是确保项目成功的关键,能够提高需求理解的准确性,增强团队协作和沟通,降低项目风险,提高开发效率。反之,项目可能面临需求理解不准确、团队沟通不…...
使用Git进行版本控制的最佳实践
文章目录 Git简介基本概念仓库(Repository)提交(Commit)分支(Branching) 常用命令初始化仓库添加文件提交修改查看状态克隆仓库分支操作合并分支推送更改 最佳实践使用有意义的提交信息定期推送至远程仓库使…...
【入门1】顺序结构 - B2025 输出字符菱形
题目描述 用 * 构造一个对角线长 55 个字符,倾斜放置的菱形。 输入格式 没有输入要求。 输出格式 如样例所示。用 * 构成的菱形。 输入输出样例 输入 #1 输出 #1**** ********* <C> : #include<stdio.h>int main() {printf(" *\n ***\n**…...
C#DLL热加载|动态替换
我有一个项目 开始取数据和结束数据部分是一样的,但中间处理数据是根据客户需求来转换的 又要求增加一个客户数据转换 主程序是不能停下来的 所以这个项目转数据转换部分做成插件式 每个客户的数据转换都是一个项目 都是一个DLL 主程序里面定义好接口类或者抽象…...
数据库三大范式
目录 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) Oracle三大范式是数据库设计中的规范化过程,旨在减少数据冗余、提高数据一致性和数据库性能。这三大范式包括第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。 第一范式(1NF) 数据库表的每一列都是不可分割…...
【linux】fdisk磁盘分区管理
介绍 fdisk是一个磁盘分区管理工具,可以用来创建、删除、修改和查看磁盘分区。 fdisk一般都是交互式使用,基础语法: fdisk /dev/sdd。进入交互窗口后,有一些选项,需要了解下: 选项含义n创建新分区p查看磁盘的分区情…...
asp.net core 入口 验证token,但有的接口要跳过验证
asp.net core 入口 验证token,但有的接口要跳过验证 在ASP.NET Core中,你可以使用中间件来验证token,并为特定的接口创建一个属性来标记是否跳过验证。以下是一个简化的例子: 创建一个自定义属性来标记是否跳过验证: public clas…...
[mysql]聚合函数GROUP BY和HAVING的使用和sql查询语句的底层执行逻辑
#GROUP BY的使用 还是先从需求出发,我们现在想求员工表里各个部门的平均工资,最高工资 SELECT department_id,AVG(salary) FROM employees GROUP BY department_id 我们就会知道它会把一样的id分组,没有部门的就会分为一组,我们也可以用其他字段来分组,我们想查询不同jb_id…...
从数据中台到数据飞轮:实现数据驱动的升级之路
从数据中台到数据飞轮:实现数据驱动的升级之路 随着数字化转型的推进,数据已经成为企业最重要的资产之一,企业普遍搭建了数据中台,用于整合、管理和共享数据;然而,近年来,数据中台的风潮逐渐减退…...
小记:SpringBoot中,@Alisa和@ApiModelProperty的区别
在 Spring Boot 中,Alias和ApiModelProperty 这两个注解用于不同的目的。 Alias Alias是一个用于定义别名的注解,通常用于 Bean 属性的别名功能,这样在使用某些框架(如 JPA 或 Jackson)时,可以将一个属性名…...
信捷 PLC C语言 定时器在FC中的使用
传统梯形图的定时器程序写起来简单,本文用C语言写定时器的使用。 定时器在c语言中使用,和普通梯形图中使用的区别之一是既有外部条件,也有内部条件。 1.建全局变量 2.建立FC POU 这个是功能POU程序。 这里的Enable是内部条件 3.调用包含定…...
k8s常用对象简介
Pod Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。 Pod 是一组(一个或多个) 容器; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 中的内容总是并置(colocated)的并且一同调度&…...
【Kaggle | Pandas】练习2:索引,选择和分配
文章目录 数据总表1、读取列2、读取某列的第几行的值3、第一行数据4、读取列中前10个值5、读取索引标签为1 、 2 、 3 、 5和8的记录6、包含索引标签为0 、1 、10和100的记录的country 、province 、 region_1和region_2列7、 前 100 条记录的country和variety列8、包含Italy葡…...
【flask】 flask redis的使用
目的:如何使用在flask web项目中连接redis,并简单的使用 使用的库包:flask-redis pip install falsk-redis下面的写法是对项目代码进行模块化拆分的写法,在app.py中只进行对象的初始化等操作;exts.py中创建对象&…...
【Unity基础】Unity中的特殊文件夹详解
在Unity项目中,通常可以根据需要创建任意名称的文件夹来组织项目内容,但有一些特定的文件夹名称会触发Unity对其中资源和脚本的特殊处理。这篇文章将详细介绍这些特殊文件夹,帮助开发者在项目中合理地使用它们。 1. Assets 文件夹 Assets文…...
矩阵蠕虫,陈欣出品
第一章 陈欣是一名资深的软件工程师,专门从事分布式系统和人工智能的研究。她的最新项目叫做“MatrixWorm”,目标是创建一个简单而强大的远程控制系统。在这个系统中,控制端可以通过文字命令,让被控制端利用大语言模型的能力来理…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
