当前位置: 首页 > 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: 旋转后…...

产品经理必备:Gemini3.1Pro高效撰写需求文档指南

做产品经理的人&#xff0c;大多都写过需求文档&#xff0c;但真正让人头疼的&#xff0c;往往不是“写”&#xff0c;而是“写得清楚”。 需求背景要交代&#xff0c;目标要明确&#xff0c;流程要完整&#xff0c;边界条件要说明&#xff0c;异常情况还不能漏&#xff0c;最后…...

从Siri上车看车载语音交互:技术演进、产业融合与安全设计

1. 项目概述&#xff1a;当Siri首次驶入驾驶舱2012年洛杉矶国际车展上的一则新闻&#xff0c;在当时的汽车与科技圈激起了不小的涟漪。通用汽车宣布&#xff0c;其旗下的雪佛兰品牌将成为首批将苹果Siri语音助手集成到车载信息娱乐系统中的汽车制造商&#xff0c;首发车型包括雪…...

从基础到智能体:RAG技术演进与实战避坑指南

1. 从基础到进阶&#xff1a;我眼中的RAG技术演进与实战价值如果你正在探索如何让大语言模型&#xff08;LLM&#xff09;变得更“靠谱”&#xff0c;尤其是在处理专业、实时或私有数据时&#xff0c;那么“检索增强生成”&#xff08;RAG&#xff09;技术几乎是你绕不开的路径…...

1D-CNN模型如何关联阴谋论搜索与仇恨犯罪预测

1. 项目概述&#xff1a;当AI遇见阴谋论——一次用数据洞察社会风险的尝试作为一名长期关注数据科学与社会计算交叉领域的研究者&#xff0c;我常常思考一个问题&#xff1a;互联网上那些看似荒诞、却拥有庞大拥趸的阴谋论&#xff0c;究竟只是茶余饭后的谈资&#xff0c;还是真…...

Windows本地AI开发环境搭建:OpenClaw与Ollama集成指南

1. 项目概述&#xff1a;一个为Windows开发者量身打造的本地AI开发环境如果你是一名在Windows 11上工作&#xff0c;同时又对本地运行大语言模型&#xff08;LLM&#xff09;和AI助手感兴趣的开发者&#xff0c;那么你很可能已经体验过那种“配置地狱”&#xff1a;WSL2、Docke…...

【Instagram内容工业化生产】:ChatGPT + Canva + Notion三件套实战手册(含私有化部署Prompt库下载权限)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Instagram内容工业化生产的底层逻辑与范式迁移 Instagram内容工业化生产已从个体化、灵感驱动的创作模式&#xff0c;转向数据闭环、模块化协同与AI增强的系统工程。其底层逻辑根植于三重耦合&#xff…...

专业级macOS歌词同步方案:LyricsX核心功能深度解析

专业级macOS歌词同步方案&#xff1a;LyricsX核心功能深度解析 【免费下载链接】LyricsX &#x1f3b6; Ultimate lyrics app for macOS. 项目地址: https://gitcode.com/gh_mirrors/ly/LyricsX LyricsX是一款专为macOS设计的专业级歌词同步工具&#xff0c;通过智能歌词…...

LLM RAG还值得做吗?今天一下就顿悟了

在企业级AI应用领域&#xff0c;RAG&#xff08;检索增强生成&#xff09;不仅值得深耕&#xff0c;更是当前唯一能站稳脚跟的核心护城河。曾有人断言长上下文窗口&#xff08;Long Context&#xff09;会取代RAG&#xff0c;但这一说法早在2024年就被彻底证伪&#xff0c;进入…...

别再只把JWT当登录凭证了!从CTFHub靶场看JWT在API安全与数据交换中的‘双刃剑’效应

JWT安全实战&#xff1a;从CTFHub靶场到企业级API防护的深度解析 在数字化身份认证领域&#xff0c;JSON Web Token&#xff08;JWT&#xff09;早已超越简单的登录凭证角色&#xff0c;成为现代分布式系统的核心组件。当开发者仅将其视为"带签名的Cookie"时&#xf…...

工程师实战:Windows 8工作站部署、驱动危机与专业工具兼容性全解析

1. 从工程师视角看Windows 8的喧嚣与真实2013年&#xff0c;当Windows 8带着那个被称为“Metro”的崭新界面横空出世时&#xff0c;整个科技圈&#xff0c;尤其是我们这些整天和硬件、设计工具打交道的工程师群体&#xff0c;几乎炸开了锅。媒体上充斥着两极分化的评价&#xf…...