首页 > 其他分享 >可能简单的归并排序

可能简单的归并排序

时间:2024-07-27 09:25:08浏览次数:12  
标签:tmp 归并 right int begin1 ++ 简单 排序 left

//归并排序

将原始数组A[0:n-1]中的元素分成两个大小大致相同的子数组:A[0:n/2]和A[n/2+1:n-1],分别对这两个子数组单独排序,然后将已排序的两个数组归并成一个含有n个元素的有序数组。(不断地进行二分,直至待排序数组中只剩下一个元素为止,然后不断合并两个排好序的数组段)


void MergeArr(int* a, int begin1, int end1, int begin2, int end2, int* tmp)//归并
{
    int left=begin1, right=end2;
    int index = begin1;
    while (begin1 <= end1 && begin2 <= end2)
    {
        if (a[begin1] < a[begin2])
        {
            tmp[index++] = a[begin1++];
        }
        else
        {
            tmp[index++] = a[begin2++];
        }
    }
    while (begin1 <= end1)
    {
        tmp[index++] = a[begin1++];
    }
    while (begin2 <= end2)
    {
        tmp[index++] = a[begin2++];
    }
    for (int i = left; i <= right; ++i)
    {
        a[i] = tmp[i];
    }
}
void _MergeSort(int* a, int left,int right,int*tmp)
{
    if (left >= right)
    {
        return;
    }
    int mid = (left + right) / 2;

    _MergeSort(a, left, mid, tmp);
    _MergeSort(a, mid+1,right, tmp);

    MergeArr(a, left, mid, mid + 1, right, tmp);
}


void MergeSort(int* a, int n)
{
    assert(a);

    int* tmp = (int*)malloc(sizeof(int) * n);

    _MergeSort(a, 0, n - 1, tmp);


    free(tmp);
}

标签:tmp,归并,right,int,begin1,++,简单,排序,left
From: https://blog.csdn.net/2403_85903590/article/details/140725747

相关文章

  • 使用 Python 构建简单 REST API
    使用Python构建简单RESTAPI1.概述本技术文档旨在指导开发者使用Python框架Flask构建一个基本的RESTAPI。通过学习本指南,您将掌握创建、读取、更新和删除(CRUD)操作的基本知识,并能够使用Python构建自己的API。2.安装依赖首先,您需要确保已安装Python和Flask......
  • Linux内核链表源码的简单操作
    一、Linux内核链表源码的获取下载系统源码的方法常见的有两种:第一种访问网站下载:kernel.org第二种输入Linux命令下载:sudoaptinstalllinux-source-5.15.0(一般这种下载的是当前系统所用到的系统源码版本)下载完之后在/usr/src中可找到系统源码的压缩包,可以解压......
  • 构建一个具有深色模式的简单React Web应用
    在当今的Web开发世界里,创建一个既美观又功能丰富的用户界面是至关重要的。在本文中,我们将探讨如何使用React构建一个简单但功能强大的Web应用,它包含导航栏、内容展示区域和深色模式切换功能。项目概述我们的目标是创建一个具有以下特性的Web应用:左侧导航栏,包含四个......
  • 使用Python进行简单的图像处理
    使用Python进行简单的图像处理概述本文档将介绍如何使用Python进行简单的图像处理。我们将使用Pillow库来处理图像,并演示一些常见的图像操作,例如调整大小、裁剪、旋转和颜色转换。安装Pillow使用pip安装Pillow库:pipinstallpillow导入库在你的Python脚本中导入PIL模块:fr......
  • MVI 简单易懂
    Model-View-Intent出现的目的是为了解决MVVM中双向绑定数据的不足。把双向绑定变成单向数据流。使用Flow代替LiveData存储数据。Model:这里的Model不是其他框架中的Model层,在MVI框架中表示存储UI的状态。View:在MVI中View层主要是接口,负责相应UI的状态。Intent:在MVI中In......
  • 【数据结构与算法】快速排序万字全攻略:hoare版本、挖坑法、前后指针法、优化版、非递
          ......
  • 软考-软件设计师(3)-数据结构与算法:树、图、队列、查找算法、排序算法、霍夫曼编码/
    场景软考-软件设计师-数据结构与算法模块高频考点整理。以下为高频考点、知识点汇总,不代表该模块所有知识点覆盖,请以官方教程提纲为准。注:博客:霸道流氓气质-CSDN博客实现知识点树:节点的度、树的度、深度、高度、满二叉树、完全二叉树、平衡二叉树、B树、二叉排序树节点......
  • 如何申请HTTPS证书?简单5步完成HTTPS证书申请
    在当今互联网+时代,保护用户的敏感数据和隐私变得越来越重要,HTTPS证书可以加密传输数据,有效保护传输数据安全,消除浏览器不安全提示,增加网站的安全性和可信性,由此个人或企业网站都建议部署HTTPS证书。那么我们应该如何申请HTTPS证书呢?在本文中,我们将向您介绍5个简单的步骤,让您轻......
  • EasyExcel简单导出
    @ApiOperation("导出历史上送记录")@PostMapping(value="/exportSend",produces="application/octet-stream")publicvoidexportExcel(@RequestBodyExportSendVOsendVO,HttpServletResponseresponse)throwsException{//获取数据List&......
  • pytest-req插件:更简单的做接口测试
    pytest-req插件:更简单的做接口测试背景我们经常会用到pytest和requests进行接口自动化测试。pytest提供了非常方便的插件开发能力,在pytest中使用requests库首先会想到是否有已经封装好的插件,就像pytest-playwright、pytest-selenium一样。可惜找了一下没有。于是,自己动手......