当前位置: 首页 > news >正文

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公司开发&#xff0c;是一个用于构建Web和原生交互界面的库 1.1 React优势 相较于传统基于DOM开发的优势 1.组件化的开发方式 2.不错的性能 相较于其他前端框架的优势 1.丰富的生态 2.跨平台支持 1.2React的时长情况 全球最流行&#xff0c;大厂…...

《Kadane‘s Algorithm专题:最大和连续子数组》

&#x1f680; 博主介绍&#xff1a;大家好&#xff0c;我是无休居士&#xff01;一枚任职于一线Top3互联网大厂的Java开发工程师&#xff01; &#x1f680; &#x1f31f; 在这里&#xff0c;你将找到通往Java技术大门的钥匙。作为一个爱敲代码技术人&#xff0c;我不仅热衷…...

Vue基础(5)

ref属性 在 Vue2 中&#xff0c;ref是一个特殊的属性&#xff0c;用于在模板中获取对某个 DOM 元素或子组件的引用。通过 ref&#xff0c;我们可以在 JavaScript 代码中直接访问该 DOM 元素或组件实例。 示例: <template><div><input ref"inputField&quo…...

面对复杂的软件需求:5大关键策略!

面对软件需求来源和场景的复杂性&#xff0c;有效地管理和处理需求资料是确保项目成功的关键&#xff0c;能够提高需求理解的准确性&#xff0c;增强团队协作和沟通&#xff0c;降低项目风险&#xff0c;提高开发效率。反之&#xff0c;项目可能面临需求理解不准确、团队沟通不…...

使用Git进行版本控制的最佳实践

文章目录 Git简介基本概念仓库&#xff08;Repository&#xff09;提交&#xff08;Commit&#xff09;分支&#xff08;Branching&#xff09; 常用命令初始化仓库添加文件提交修改查看状态克隆仓库分支操作合并分支推送更改 最佳实践使用有意义的提交信息定期推送至远程仓库使…...

【入门1】顺序结构 - B2025 输出字符菱形

题目描述 用 * 构造一个对角线长 55 个字符&#xff0c;倾斜放置的菱形。 输入格式 没有输入要求。 输出格式 如样例所示。用 * 构成的菱形。 输入输出样例 输入 #1 输出 #1**** ********* <C> : #include<stdio.h>int main() {printf(" *\n ***\n**…...

C#DLL热加载|动态替换

我有一个项目 开始取数据和结束数据部分是一样的&#xff0c;但中间处理数据是根据客户需求来转换的 又要求增加一个客户数据转换 主程序是不能停下来的 所以这个项目转数据转换部分做成插件式 每个客户的数据转换都是一个项目 都是一个DLL 主程序里面定义好接口类或者抽象…...

数据库三大范式

目录 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) Oracle三大范式是数据库设计中的规范化过程,旨在减少数据冗余、提高数据一致性和数据库性能。这三大范式包括第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。 第一范式(1NF) 数据库表的每一列都是不可分割…...

【linux】fdisk磁盘分区管理

介绍 fdisk是一个磁盘分区管理工具&#xff0c;可以用来创建、删除、修改和查看磁盘分区。 fdisk一般都是交互式使用&#xff0c;基础语法: fdisk /dev/sdd。进入交互窗口后&#xff0c;有一些选项&#xff0c;需要了解下&#xff1a; 选项含义n创建新分区p查看磁盘的分区情…...

asp.net core 入口 验证token,但有的接口要跳过验证

asp.net core 入口 验证token,但有的接口要跳过验证 在ASP.NET Core中&#xff0c;你可以使用中间件来验证token&#xff0c;并为特定的接口创建一个属性来标记是否跳过验证。以下是一个简化的例子&#xff1a; 创建一个自定义属性来标记是否跳过验证&#xff1a; public clas…...

[mysql]聚合函数GROUP BY和HAVING的使用和sql查询语句的底层执行逻辑

#GROUP BY的使用 还是先从需求出发,我们现在想求员工表里各个部门的平均工资,最高工资 SELECT department_id,AVG(salary) FROM employees GROUP BY department_id 我们就会知道它会把一样的id分组,没有部门的就会分为一组,我们也可以用其他字段来分组,我们想查询不同jb_id…...

从数据中台到数据飞轮:实现数据驱动的升级之路

从数据中台到数据飞轮&#xff1a;实现数据驱动的升级之路 随着数字化转型的推进&#xff0c;数据已经成为企业最重要的资产之一&#xff0c;企业普遍搭建了数据中台&#xff0c;用于整合、管理和共享数据&#xff1b;然而&#xff0c;近年来&#xff0c;数据中台的风潮逐渐减退…...

小记:SpringBoot中,@Alisa和@ApiModelProperty的区别

在 Spring Boot 中&#xff0c;Alias和ApiModelProperty 这两个注解用于不同的目的。 Alias Alias是一个用于定义别名的注解&#xff0c;通常用于 Bean 属性的别名功能&#xff0c;这样在使用某些框架&#xff08;如 JPA 或 Jackson&#xff09;时&#xff0c;可以将一个属性名…...

信捷 PLC C语言 定时器在FC中的使用

传统梯形图的定时器程序写起来简单&#xff0c;本文用C语言写定时器的使用。 定时器在c语言中使用&#xff0c;和普通梯形图中使用的区别之一是既有外部条件&#xff0c;也有内部条件。 1.建全局变量 2.建立FC POU 这个是功能POU程序。 这里的Enable是内部条件 3.调用包含定…...

k8s常用对象简介

Pod Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。 Pod 是一组&#xff08;一个或多个&#xff09; 容器&#xff1b; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 中的内容总是并置&#xff08;colocated&#xff09;的并且一同调度&…...

【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的使用

目的&#xff1a;如何使用在flask web项目中连接redis&#xff0c;并简单的使用 使用的库包&#xff1a;flask-redis pip install falsk-redis下面的写法是对项目代码进行模块化拆分的写法&#xff0c;在app.py中只进行对象的初始化等操作&#xff1b;exts.py中创建对象&…...

【Unity基础】Unity中的特殊文件夹详解

在Unity项目中&#xff0c;通常可以根据需要创建任意名称的文件夹来组织项目内容&#xff0c;但有一些特定的文件夹名称会触发Unity对其中资源和脚本的特殊处理。这篇文章将详细介绍这些特殊文件夹&#xff0c;帮助开发者在项目中合理地使用它们。 1. Assets 文件夹 Assets文…...

矩阵蠕虫,陈欣出品

第一章 陈欣是一名资深的软件工程师&#xff0c;专门从事分布式系统和人工智能的研究。她的最新项目叫做“MatrixWorm”&#xff0c;目标是创建一个简单而强大的远程控制系统。在这个系统中&#xff0c;控制端可以通过文字命令&#xff0c;让被控制端利用大语言模型的能力来理…...

python 爬虫 入门 五、抓取图片、视频

目录 一、图片、音频 二、下载视频&#xff1a; 一、图片、音频 抓取图片的手法在上一篇python 爬虫 入门 四、线程&#xff0c;进程&#xff0c;协程-CSDN博客里面其实有&#xff0c;就是文章中的图片部分&#xff0c;在那一篇文章&#xff0c;初始代码的28&#xff0c;29行…...

ubantu 编译安装ceph 18.2.4

下载ceph代码 git clone https://github.com/ceph/ceph.git #切换tag git checkout v18.2.4 -b v18.2.4 #下载子模块 会有报错重新执行即可 git submodule update --init --recursive安装ceph所需要的依赖 #curl命令安装 sudo apt install curl#安装ceph依赖 ./install-deps.…...

哈希封装“unordered_set·map“

本文与对setmap的封装高度相似&#xff0c;可以参考我之前的对setmap封装的文章&#xff1a; 链接&#xff1a;&#xff08;没看过的话就点点我吧&#x1f61a;&#x1f61a;&#x1f61a;&#x1f61a;&#x1f61a;&#x1f61a;&#x1f61a;&#x1f61a;&#x1f61a;&am…...

Bi-LSTM-CRF实现中文命名实体识别工具(TensorFlow)

项目源码获取方式见文章末尾&#xff01; 回复暗号&#xff1a;13&#xff0c;免费获取600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 **《------往期经典推荐------》**项目名称 1.【MobileNetV2实现实时口罩检测tensorflow】 2.【卫星图像道路检测DeepLabV3P…...

从JDK 17 到 JDK 21:Java 新特性

JDK17 密封类 概念&#xff1a;密封类允许开发者控制哪些类可以继承或实现特定的类或接口。通过这种方式&#xff0c;密封类为类的继承提供了更高的安全性和可维护性。 定义&#xff1a;使用sealed代表该类为密封类&#xff0c;并用permits限制哪些类可以继承。 public sea…...

【计算机网络 - 基础问题】每日 3 题(五十七)

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞…...

第十二章 章节练习created的应用

目录 一、引言 二、运行效果图 ​三、完整代码 一、引言 构建一个新闻的页面&#xff0c;页面在响应式数据准备好之后&#xff08;即created&#xff09;&#xff0c;就向后台接口请求获取新闻数据列表&#xff0c;然后赋值给Vue实例中的list列表&#xff0c;这个请求逻辑我…...

Unity 游戏性能优化实践:内存管理与帧率提升技巧

1. 引言 随着移动设备性能的逐步提升&#xff0c;游戏玩家对画质和流畅度的要求越来越高。优化 Unity 游戏性能不仅可以提升用户体验&#xff0c;还能降低设备的功耗&#xff0c;延长电池寿命。这篇文章将深入探讨如何在 Unity 中优化游戏的内存管理与帧率&#xff0c;通过多方…...

C++游戏开发详解

C 是一种广泛使用的编程语言&#xff0c;尤其在游戏开发领域有着不可替代的地位。它提供了对底层硬件的直接访问能力&#xff0c;允许开发者优化性能&#xff0c;这对于追求高帧率和低延迟的游戏来说至关重要。本文将详细介绍使用 C 进行游戏开发的基础知识和技术要点&#xff…...

三、大模型(LLMs)微调面

本文精心汇总了多家顶尖互联网公司在大模型基础知识考核中的核心考点&#xff0c;并针对这些考点提供了详尽的解答。并提供电子版本&#xff0c;见于文末百度云盘链接中&#xff0c;供读者查阅。 一、大模型微调 • 1 如果想要在某个模型基础上做全参数微调&#xff0c;究竟需要…...

自助建站教程/宁波网络推广团队

因操作系统问题&#xff0c;我的 EC2 Linux 实例的实例状态检查失败。如何解决此问题&#xff1f;上次更新时间&#xff1a;2020 年 6 月 2 日由于操作系统问题&#xff0c;我的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例的实例状态检查失败。现在&#xff0c;它不…...

教育网站建设的策划方案/成都关键词优化报价

基督教 赞美诗歌 Hymns Lyrics MP3 中文版 英文版 中英对照 MP3音频提取&#xff08;自动播放&#xff09;&#xff1a; http://filer.blogbus.com/5320797/resource_53207971262594667h.mp3 &#xff08;右击迅雷或目标另存为&#xff09; 词曲&#xff1a; 写作背景介绍&…...

山东泰山新闻/seo公司多少钱

key1&#xff1a;使用指针遍历&#xff0c;这是最常见的方式。 使用cv::Mat类型的属性&#xff0c;rows是Mat类型的行数&#xff0c;cols是列数&#xff0c;channels()是通道数&#xff0c;那么对于图像的每一行&#xff0c;都有cols*channels()个像素点&#xff0c;所以我们可…...

wordpress怎么上传ppt/网站运营师

提出需求做图像处理时&#xff0c;有时会遇到换色问题&#xff0c;就例如下面图片(网上找的小姐姐图片&#xff0c;侵删)的背景图并不喜欢&#xff0c;我想换成蓝色的要怎么做呢这时候肯定会有小伙伴会想到PS&#xff0c;PS 工具当然是首选&#xff0c;但是如果有大量图片需要更…...

网站建设与维护的软件/常德网站seo

原文链接: 1, http://blog.csdn.net/phoebin/article/details/3864590 2, http://blog.csdn.net/hancunai0017/article/details/7032383转载于:https://www.cnblogs.com/qingyuanjushi/p/5911431.html...

seo优化网络推广/seo网络营销的技术

原文:C# 获取磁盘容量/// 获取指定驱动器的空间总大小(单位为B) /// </summary> /// <param name"str_HardDiskName">只需输入代表驱动器的字母即可 </param> /// <returns> </returns> public static long GetHardDiskSpace(string s…...