首页 > 其他分享 >归并排序模板

归并排序模板

时间:2024-02-15 20:22:06浏览次数:30  
标签:sort 归并 int mid merge 排序 模板

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int n,s[N],res[N];
void merge_sort(int s[],int l,int r)
{
    int mid = (l+r)>>1;
    if(l>=r) return; 
    merge_sort(s,l,mid);
    merge_sort(s,mid+1,r);
    int i=l,k=0,j=mid+1;
    while(i<=mid && j<=r )
    {
        if(s[i]<=s[j]) res[k++] = s[i++];
        else res[k++] = s[j++];
    }
    while(j<=r)
    {
        res[k++] = s[j++];
    }
    while(i<=mid)
    {
        res[k++]=s[i++];
    }
    for(int p=l,m=0;p<=r;p++,m++) s[p]=res[m];
}
int main()
{
    cin>>n;
    for(int i=0;i<n;i++) cin>>s[i];
    merge_sort(s,0,n-1);
    for(int i=0;i<n;i++) cout<<s[i]<<' ';
    return 0;
}

 

标签:sort,归并,int,mid,merge,排序,模板
From: https://www.cnblogs.com/solutide/p/18016559

相关文章

  • chapter3-排序和查找2
    2.基础查找所谓查找,就是在查找空间中找寻符合要求的解的过程。查找方法有多种,下面简单介绍3种。不同的策略对查找的效率和结果有不同的影响。2.1线性查找从首元素开始,遍历整个序列,直到找到目标元素,则结束算法;或者遍历完序列还没有匹配,则查找失败结束算法。时间复杂度为O(n)。......
  • 二叉树遍历问题模板
    在二叉树遍历问题中,有三种常见的遍历方式:前序遍历、中序遍历和后序遍历。以下是这三种遍历方式的递归模板:1.前序遍历(PreorderTraversal):defpreorderTraversal(root):ifnotroot:return[]result=[]result.append(root.val)#处理当前节点......
  • 回溯算法模板
    回溯算法的模板通常包含递归函数和回溯过程。以下是一个通用的回溯算法模板:defbacktrack(start,path,other_parameters):#满足结束条件时,将当前路径加入结果ifsatisfies_end_condition:result.append(path[:])return#从start开始遍历可......
  • 拓扑排序入门
    目录写在前面一些概念算法步骤字典序最大/最小的拓扑序列?模板例题3704.排队家谱树奖金P1983[NOIP2013普及组]车站分级1639.拓扑顺序写在前面昨晚cfdiv3的F就是一道基本上可以说板子的拓扑排序的题目,没有做出来感觉图论很早之前就看了,但是基本没有刷过什么题,开始补一下图论......
  • 模板
    01.模版的概念(了解)1.函数或类是通用,但是里面的数据类型的多种状态2.模版有:函数和类02.函数模版(重点)1.什么是函数模版函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来代表。这个通用函数就成为函数模板2.怎么编写函数模版//T代表泛型的......
  • 912.排序数组--插入排序
    1.题目介绍给你一个整数数组nums,请你将该数组升序排列。示例1:输入:nums=[5,2,3,1]输出:[1,2,3,5]示例2:输入:nums=[5,1,1,2,0,0]输出:[0,0,1,1,2,5]2.题解2.1插入排序思路主要思路就是创建一个有序区域和无序区域,不断从无序区域取一张出来顺序插入有序区域即可代......
  • 912.排序数组--冒泡排序
    1.题目介绍给你一个整数数组nums,请你将该数组升序排列。示例1:输入:nums=[5,2,3,1]输出:[1,2,3,5]示例2:输入:nums=[5,1,1,2,0,0]输出:[0,0,1,1,2,5]2.题解2.1冒泡排序思路跟选择排序,固定一个i,后续者不断打擂台挑战不同,冒泡排序永远是两个邻接值比较,较大值不断向后冒......
  • 912.排序数组--选择排序
    1.题目介绍给你一个整数数组nums,请你将该数组升序排列。示例1:输入:nums=[5,2,3,1]输出:[1,2,3,5]示例2:输入:nums=[5,1,1,2,0,0]输出:[0,0,1,1,2,5]2.题解2.1插入排序思路打擂台,每次确定第一名,第二名,第三名,依次往后代码#include<bits/stdc++.h>usingnamespace......
  • P3367 【模板】并查集
    原题链接并查集模板练手。递归版本#include<bits/stdc++.h>usingnamespacestd;constintN=1e4+5;intfather[N];intfind(intmid){if(father[mid]!=mid){father[mid]=find(father[mid]);}returnfather[mid];}voidunion_fa(intx,inty){......
  • 排序
    一、选择排序voidselection_sort(int*arr,intL,intR){for(inti=L;i<R;i++){intind=i;for(intj=i+1;j<R;j++)if(arr[j]<arr[ind])ind=j;swap(arr[i],arr[ind]);}}二、插入排序......