首页 > 编程语言 >基础算法(二)归并排序模板

基础算法(二)归并排序模板

时间:2024-01-17 17:14:35浏览次数:31  
标签:sort 归并 int mid merge 排序 模板

模板如下

#include<iostream>
using namespace std;

const int N=1000010;
int q[N],tmp[N];

void merge_sort(int q[],int l,int r){
    if(l>=r)return;
    int mid = (l+r)>>1;
     int k=0,i=l,j=mid+1;
   
    merge_sort(q,l,mid);
    merge_sort(q,mid+1,r);

    
    while(i<=mid&&j<=r)
        if(q[i]<=q[j]) tmp[k++]=q[i++];
        else tmp[k++]= q[j++];
        while(i<=mid) tmp[k++]=q[i++];
        while(j<=r) tmp[k++]=q[j++];

    for(int i=l,j=0;i<=r;i++,j++)q[i]=tmp[j];
    
}

int main(){
    int n;
    scanf("%d",&n);
    for(int i =0;i<n;i++)scanf("%d",&q[i]);
    
    merge_sort(q,0,n-1);
    
    for(int j=0;j<n;j++)cout<<q[j]<<" ";
    return 0;
}

 

标签:sort,归并,int,mid,merge,排序,模板
From: https://www.cnblogs.com/Ghost-Knight/p/17970474

相关文章

  • 模板编程
    函数模板不是一个实在的函数,编译器不能为其生成可执行代码。定义函数模板后只是一个对函数功能框架的描述,当他具体执行的时候,将根据传递的实际参数决定其功能(运行期间的多态,动态多态)。C++提供两种模板机制:类模板和函数模板。注意这里T类型必须在使用模板的时候定义,而且可以有多个T......
  • 在 SAP Web IDE 个人版中根据模板创建项目时,选择 OData 服务时出现catalog service is
     1.NOTE2684697 ,重点是点2点5的问题 2.去掉CatalogServiceVersion2的系统别名(包括LOCAL)翻阅其他博客,有人说是因为系统别名,我给去掉了。 ......
  • 二次剩余模板简记
    \(x^2\equivn\pmodp\),其中\(p\)是奇素数。当\(n=0\)时有\(x=0\),以下规定\(n\not=0\)。假设\(n\)是二次剩余且有多个不同解,其中两个解分别是\(x_0,x_1\in[1,p)\)。有\({x_0}^2\equiv{x_1}^2\equivn\pmodp\)。移项,平方差公式得\((x_0+x_1)(x_0-x_1)\equiv0\p......
  • C++ STL标准模板库
    目录简介容器(Containers)迭代器(Iterators)算法(Algorithms)函数对象(FunctionObjects)适配器(Adaptors)分配器(Allocators)std::min_element()简介C++中的STL(标准模板库)可以分为六个部分,分别是容器(Containers)、迭代器(Iterators)、算法(Algorithms)、函数对象(FunctionObjects)、适配器(Adapto......
  • js实现快速排序和归并排序
    letarr1=[8,3,9,14,32,2,1,5]//归并排序functionmergeSort(arr){if(arr.length<2)returnarrletmid=Math.floor(arr.length/2)letleft=arr.slice(0,mid)letright=arr.slice(mid)returnmerge(mergeSort(left),merg......
  • python 在排序数组中查找元素的第一个和最后一个位置 多种解法
    二分查找:基于二分查找的算法可以在O(logn)的时间复杂度内解决该问题。具体实现方式是,先使用二分查找找到该元素的位置,然后向左和向右扩展,直到找到第一个和最后一个位置。代码如下:defsearchRange(nums,target):defbinarySearch(nums,target,lower):left,righ......
  • C语言爬虫程序编写的爬取APP通用模板
    互联网的飞快发展,尤其是手机终端业务的发展,让越来越多的事情都能通过手机来完成,电脑大部分的功能也都能通过手机实现,今天我就用C语言写一个手机APP类爬虫教程,方便后期拓展APP爬虫业务。而且这个模板是通用的适合各种APP爬虫,下面跟着我看下具体的代码吧。下面就是我给大家提供一个基......
  • 成为一个合格程序员所必备的三种常见LeetCode排序算法
    排序算法是一种通过特定的算法因式将一组或多组数据按照既定模式进行重新排序的方法。通过排序,我们可以得到一个新的序列,该序列遵循一定的规则并展现出一定的规律。经过排序处理后的数据可以更方便地进行筛选和计算,从而大大提高了计算效率。因此,掌握排序算法是每个程序员的基本功......
  • 模板
    周日有模拟赛所以复习若干板子树状数组inlineintlowbit(intx){returnx&-x;}//lowbitinlineintask(intx){intans=0;while(x){ans+=t[x];x-=lowbit(x);}returnans;}//单点查询inlinevoidchange(intx,intv)......
  • java排序算法
    Java中常用的排序算法包括以下几种:冒泡排序(BubbleSort):这是一种简单的排序算法,通过重复地遍历待排序的序列,比较相邻的两个元素,如果它们的顺序错误就把它们交换过来。遍历序列的工作是重复地进行直到没有再需要交换,也就是说该序列已经排序完成。选择排序(SelectionSort):这种排序算法......