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”,目标是创建一个简单而强大的远程控制系统。在这个系统中,控制端可以通过文字命令,让被控制端利用大语言模型的能力来理…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...