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

C语言实现归并排序算法(附带源代码)

归并排序

把数据分为两段,从两段中逐个选最小的元素移入新数据段的末尾。

可从上到下或从下到上进行。

动态效果过程演示:

归并排序(Merge Sort)是一种分治算法,它将一个数组分为两个子数组,分别对这两个子数组进行排序,然后将这两个有序的子数组合并成一个有序的数组。以下是用 C 语言实现归并排序的示例代码:

#include <stdio.h>// 归并两个子数组
void merge(int arr[], int left, int middle, int right) {int i, j, k;int n1 = middle - left + 1;int n2 = right - middle;// 创建临时数组int L[n1], R[n2];// 将数据复制到临时数组 L[] 和 R[]for (i = 0; i < n1; i++)L[i] = arr[left + i];for (j = 0; j < n2; j++)R[j] = arr[middle + 1 + j];// 归并两个临时数组到 arr[left..right]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 middle = left + (right - left) / 2;// 递归地对左右两个子数组进行排序mergeSort(arr, left, middle);mergeSort(arr, middle + 1, right);// 合并两个有序的子数组merge(arr, left, middle, right);}
}int main() {int arr[] = {64, 25, 12, 22, 11};int n = sizeof(arr) / sizeof(arr[0]);// 调用归并排序函数mergeSort(arr, 0, n - 1);// 输出排序后的数组printf("排序后的数组: ");for (int i = 0; i < n; i++) {printf("%d ", arr[i]);}return 0;
}

在上述代码中,mergeSort 函数实现了归并排序的核心逻辑,而 merge 函数用于合并两个有序的子数组。在 main 函数中,创建了一个整数数组,调用 mergeSort 函数对数组进行排序,最后输出排序后的数组。

归并排序的时间复杂度是 O(n log n),其中 n 是数组的长度。它具有稳定性,适用于大型数据集。

希望你也学会了,更多编程源码请来二当家的素材网:https://www.erdangjiade.com

相关文章:

C语言实现归并排序算法(附带源代码)

归并排序 把数据分为两段&#xff0c;从两段中逐个选最小的元素移入新数据段的末尾。 可从上到下或从下到上进行。 动态效果过程演示&#xff1a; 归并排序&#xff08;Merge Sort&#xff09;是一种分治算法&#xff0c;它将一个数组分为两个子数组&#xff0c;分别对这两个…...

考研C语言刷题基础篇之分支循环结构基础(二)

目录 第一题分数求和 第二题&#xff1a;求10 个整数中最大值 第三题&#xff1a;在屏幕上输出9*9乘法口诀表 第四题&#xff1a;写一个代码&#xff1a;打印100~200之间的素数 第五题&#xff1a;求斐波那契数的第N个数 斐波那契数的概念&#xff1a;前两个数相加等于第三…...

Scala基础知识

scala 1、scala简介 ​ scala是运行在JVM上的多范式编程语言&#xff0c;同时支持面向对象和面向函数式编程。 2、scala解释器 要启动scala解释器&#xff0c;只需要以下几步&#xff1a; 按住windows键 r输入scala即可 在scala命令提示窗口中执行:quit&#xff0c;即可退…...

数学建模-------误差来源以及误差分析

绝对误差&#xff1a;精确值-近似值&#xff1b; 举个例子&#xff1a;从A到B&#xff0c;应该有73千米&#xff0c;但是我们近似成了70千米&#xff1b;从C到D&#xff0c;应该是1373千米&#xff0c;我们近似成了1370千米&#xff0c;如果使用绝对误差&#xff0c;结果都是3…...

Arduino和MPLAB X 开发STM32F103和PIC16F15376

要点&#xff1a; 使用Arduino开发STM32F103&#xff08;Blue Pill&#xff09;&#xff0c;MPLAB X 开发PIC16F15376&#xff08;Curiosity Nano&#xff09;C/C嵌入式开发ESP32(Arduino、ESP-IDF)和STM32实时操作系统FreeRTOS STM32使用FreeRTOS示例 在使用 FreeRTOS 时&a…...

手机操作系统Android

▶1.Android系统概述 Andaid(读[安卓)由Coosle公司和开放手机联盟共同开发&#xff0c;它是基于Lmx内核的开源操作系统。Andtoid主要用于移动设备&#xff0c;如智能手机和平板计算机。2008年发布了第一部Andtoid智能手机&#xff0c;以后Android逐渐扩展到平板计算机、电视、…...

2024年,你是否还在迷茫?

2024年&#xff0c;你是否还在迷茫&#xff1f; 别担心&#xff01;鸿蒙来了&#xff0c;这个未来技术的制高点&#xff0c;为你提供了答案&#xff01; 诸多大厂疯抢、24年预计鸿蒙相关的岗位需求将达到百万级、就业均薪达到19K&#xff0c;全国高校开课…… 种种现象都在表…...

ART: Automatic multi-step reasoning and tool-use for large language models 导读

ART: Automatic multi-step reasoning and tool-use for large language models 本文介绍了一种名为“自动推理和工具使用&#xff08;ART&#xff09;”的新框架&#xff0c;用于解决大型语言模型&#xff08;LLM&#xff09;在处理复杂任务时需要手动编写程序的问题。该框架可…...

Github 2024-01-26 开源项目日报Top10

根据Github Trendings的统计&#xff0c;今日(2024-01-26统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目4Jupyter Notebook项目2HTML项目1Shell项目1Dockerfile项目1非开发语言项目1Go项目1Rust项目1 高级…...

免费的 UI 设计资源网站 Top 8

今日与大家分享8个优秀的免费 UI 设计资源网站。这些网站的资源包括免费设计材料站、设计工具、字体和其他网站&#xff0c;尤其是一些材料站。它们是免费下载的&#xff0c;材料的风格目前很流行&#xff0c;适合不同的项目。非常适合平面设计WEB/UI设计师收藏&#xff0c;接下…...

人机协同对人工智能治理的影响

人机协同对人工智能治理的影响是多方面的。 首先&#xff0c;人机协同可以提供更有效的人工智能监管和治理机制。人工智能系统通常需要大量的数据来训练和运行&#xff0c;而人类在监管和治理方面有独特的能力。通过人机协同&#xff0c;人们可以利用他们的主观意见和专业知识来…...

Form.List的使用,设置某个字段的值

1.Form.Item的name <Form.Itemname{[base_range, company_base_range_start]}dependencies{[[base_range, company_base_range_end]]}rules{[{ required: true, message: 请输入下限 },{validator: (_, value) >validateMoneyRule(value,base_range?.company_base_range…...

React16源码: React中的updateHostComponent的源码实现

updateHostComponent 1 &#xff09;概述 在 completeWork 阶段的 HostComponent 处理&#xff0c;继续前文所述在更新的逻辑里面&#xff0c;调用了 updateHostComponent进行前后props对应的dom的attributes变化的对比情况这个方法也是根据不同环境来定义的&#xff0c;我们这…...

uniapp导入uView组件库

目录 准备工作 1. 新建一个项目 2. 导入uview组件库 3. 关于SCSS 配置步骤 1. 引入uView主JS库 2. 在引入uView的全局SCSS 3. 引入uView基础样式 4. 配置easycom组件模式 添加效果实验运行即可成功 准备工作 1. 新建一个项目 2. 导入uview组件库 在进行配置之前&#x…...

防御保护----防火墙的安全策略、NAT策略实验

实验拓扑&#xff1a; 实验要求&#xff1a; 1.生产区在工作时间&#xff08;9&#xff1a;00-18&#xff1a;00&#xff09;内可以访问DMZ区&#xff0c;仅可以访问http服务器&#xff1b; 2.办公区全天可以访问DMZ区&#xff0c;其中10.0.2.10可以访问FTP服务器和HTTP服务器…...

# 安徽锐锋科技IDMS系统简介

IDMS 由安徽锐锋科技独立开发 该系统负责和海算以及UE\UNITY的无缝衔接并具备远程数据库访问、高速数据库的自动创建及数据存储、支持MQTT等多种物联网接口&#xff0c;支持多种算法。主要完成由于物料、人员、生产、故障、不良异常、订单异常带来的生产损失&#xff0c;通过海…...

Notepad在文件中查找多行相同内容的文字

Notepad在文件中查找多行相同的内容 查找&#xff1a;打开 Notepad软件&#xff0c; Ctrl F 查找 。输入关键词&#xff0c; 点击【在当前文件中查找】。 复制&#xff1a;直接在下方的【搜索结果】复制。 Notepad提取含有特定字符串的行 详情见&#xff1a; https://blog…...

Python高超音速导弹

Python高超音速导弹的全自动化开发研发具有重要性的原因如下&#xff1a; 提高研发效率&#xff1a;全自动化开发可以通过自动化工具和流程&#xff0c;快速完成各种任务&#xff0c;包括代码编写、测试、集成和部署等。这样可以大大提高研发效率&#xff0c;缩短开发周期。 减…...

Java七大排序详解

排序 排序的概念 所谓排序 &#xff0c;就是让一串记录&#xff0c;按照其中某些或者某个关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;就比如在待排序的序列中&#xff0c;存在多个具有相同关键字的记录 &#xff0c;如果经过排序这些相同的关键…...

图像旋转角度计算并旋转

#!/usr/bin/python3 # -*- coding: utf-8 -*- import cv2 import numpy as np import timedef Rotate(img, angle0.0,fill0):"""旋转:param img:待旋转图像:param angle: 旋转角度:param fill&#xff1a;填充方式&#xff0c;默认0黑色填充:return: img: 旋转后…...

ROS2数据录制实战:手把手教你用ros2 bag记录Duckiebot图像数据(附常见错误排查)

ROS2数据录制实战&#xff1a;从Duckiebot仿真到真实场景的全流程指南 在机器人开发过程中&#xff0c;数据记录与分析是算法验证和系统调试的关键环节。ROS2提供的ros2 bag工具链为开发者提供了强大的数据采集能力&#xff0c;但实际应用中往往会遇到各种意料之外的问题。本文…...

RSA宣布与Microsoft扩大合作,进一步巩固公司在无密码身份安全领域的领导地位

创新合作开启安全、基于人工智能的员工身份验证新时代 RSA今日在RSAC 2026大会上宣布&#xff0c;将扩大对全新Microsoft 365 E7&#xff1a;The Frontier Suite解决方案的支持。这一新增支持结合了额外的无密码功能&#xff0c;在企业拥抱人工智能驱动的生产力未来之际&#…...

ViGEmBus虚拟手柄驱动:Windows内核级游戏控制器模拟核心技术解析与应用指南

ViGEmBus虚拟手柄驱动&#xff1a;Windows内核级游戏控制器模拟核心技术解析与应用指南 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus作为Windows…...

QuPath生物图像分析终极指南:从零基础到高效病理研究

QuPath生物图像分析终极指南&#xff1a;从零基础到高效病理研究 【免费下载链接】qupath QuPath - Bioimage analysis & digital pathology 项目地址: https://gitcode.com/gh_mirrors/qu/qupath QuPath是一款功能强大的开源生物图像分析软件&#xff0c;专门为数字…...

Spring Boot 3.0 + Vue 3 实战:手把手教你搭建图书管理系统(附完整源码)

Spring Boot 3.0 Vue 3 全栈实战&#xff1a;现代化图书管理系统开发指南 在当今快速发展的互联网时代&#xff0c;掌握前后端分离开发技术已成为中级开发者必备的核心竞争力。本文将带你从零开始&#xff0c;使用Spring Boot 3.0和Vue 3这两个当下最热门的技术栈&#xff0c;…...

OpenClaw快速体验:30分钟玩转Qwen3.5-9B基础自动化

OpenClaw快速体验&#xff1a;30分钟玩转Qwen3.5-9B基础自动化 1. 为什么选择OpenClawQwen3.5组合&#xff1f; 去年冬天第一次接触OpenClaw时&#xff0c;我正被重复性的文件整理工作困扰。作为技术博主&#xff0c;每天需要从十几个渠道收集行业动态&#xff0c;手动归类到…...

IOMMU性能调优全攻略:从基础原理到实战技巧

IOMMU性能调优全攻略&#xff1a;从基础原理到实战技巧 在数据中心和云计算环境中&#xff0c;IOMMU&#xff08;输入输出内存管理单元&#xff09;作为硬件辅助虚拟化的关键技术组件&#xff0c;其性能表现直接影响着整个系统的吞吐量和延迟。对于需要处理高并发I/O负载的场景…...

脉冲神经网络也能玩转频域?FSTA-SNN时空注意力模块的5个实战应用场景

脉冲神经网络频域建模实战&#xff1a;FSTA-SNN模块的五大创新应用 脉冲神经网络&#xff08;SNN&#xff09;作为第三代神经网络&#xff0c;近年来在计算机视觉领域展现出独特优势。传统SNN模型在时空特征提取上存在明显短板&#xff0c;而FSTA-SNN模块的提出为这一困境提供了…...

还在纸上谈Agent?来搓一只你的「腾讯小龙虾」

大模型卷完参数&#xff0c;开始卷落地。当所有人还在谈论AI Agent如何颠覆未来工作方式时&#xff0c;一部分开发者已经让它为自己“打工”了。从写一封邮件&#xff0c;到整理一份报告&#xff0c;再到串联多个系统完成业务动作&#xff0c;AI 正在完成一次关键的身份跃迁&am…...

纯粹直播:革新直播观看体验的一站式跨平台解决方案

纯粹直播&#xff1a;革新直播观看体验的一站式跨平台解决方案 【免费下载链接】pure_live 纯粹直播:哔哩哔哩/虎牙/斗鱼/快手/抖音/网易cc/M38自定义源应有尽有。 项目地址: https://gitcode.com/gh_mirrors/pur/pure_live 您是否曾为在多个直播平台间频繁切换而感到困…...