各种排序总结与自写(归并排序)

Posted icode-xiaohu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了各种排序总结与自写(归并排序)相关的知识,希望对你有一定的参考价值。

  归并排序是一种比较重要、稳定的排序。他的核心思想是分治,也就是二分法,实现方法是递归。递归函数可以让我们到达最小单元使最小单元有序,进而向上级回溯,不断的调整更大的单元,最终使整个序列有序。

  代码及样例如下:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[100];
void Merge(int l,int mid,int r){
    int k=0,tmp[100],i=l,j=mid;
    while(i < mid && j < r){
        if(a[i] <= a[j]){
            tmp[k++] = a[i++];
        }
        else{
            tmp[k++] = a[j++];
        }
    }
    while(i < mid){
        tmp[k++] = a[i++];
    }
    while(j < r){
        tmp[k++] = a[j++];
    }
    for(int i = l;i < r;i++){
        a[i] = tmp[i-l];
    }
}
void Mysort(int l,int r){
    if(l+1 == r) return ;
    int mid = (l+r)>>1;
    Mysort(l,mid);
    Mysort(mid,r);
    Merge(l,mid,r);
}
int main(){
    int n;
    //freopen("1.txt","r",stdin);
    while(~scanf("%d",&n)){
        for(int i = 0;i < n;i++){
            scanf("%d",&a[i]);
        }
        Mysort(0,n);
        for(int i = 0;i < n;i++){
            printf("%d ",a[i]);
        }
        puts("");
    }
}

5
5 4 3 2 1
6
1 25 4 2 6 3
3
5 4 2
15
879789 15 212 20 2 -100 54 1 0 -0 48 78 78974 1561651 15

以上是关于各种排序总结与自写(归并排序)的主要内容,如果未能解决你的问题,请参考以下文章

各种排序算法总结篇(高速/堆/希尔/归并)

十大经典排序算法总结(归并排序)

数据结构(15)---排序(冒泡排序, 快速排序, 归并排序, 计数排序)

精益求精单链表归并排序与快速排序

排序算法总结之归并排序

C# 各种内部排序方法的实现(直接插入排序希尔排序冒泡排序快速排序直接选择排序堆排序归并排序基数排序)