排序算法(归并排序)

简介: 讲述了归并排序思想

归并排序是一种基于递归进行的一种排序算法
其:

空间复杂度为 O(n),时间复杂度为 O(nlogn)

归并排序是分治法思想运用的一个典范

如下图可以先将待排序数组分为两部分,之后在分别对这两部分进行排序。简单来说就是大事化小

图解

所谓递归其实就和它的名字一样先递推出去回归回来
归并排序就恰好和递归思想一致,先是将待排序数组进行拆分直到拆成一个个独立的数,也就可以联想到递归的“”:
image.png

接下来继续上面的操作直到不可再分
image.png
将其拆分完成后只需要加一个排序函数就可以利用递归的“”将其改为你想要的顺序:
image.png

递归排序C代码:

void Sort(int *arr, int left, int mid, int right)//排序函数
{
   
   
    int tmp[right-left+1];
    int l = left;
    int m = mid + 1;
    int i = 0;
    int j = 0;

    while(l <= mid && m <= right)
    {
   
   
        if (arr[l] > arr[m])
        {
   
   
            tmp[i++] = arr[m++];
        }
        else 
        {
   
   
            tmp[i++] = arr[l++];
        }        
    }
    while(l <= mid)
    {
   
   
        tmp[i++] = arr[l++];
    }
    while(m <= right)
    {
   
   
        tmp[i++] = arr[m++];
    }
    for (i = 0, j = left; j <=right; i++, j++)
    {
   
   
        arr[j] = tmp[i];
    }
}

void MergeSort(int *arr, int left, int right)//递归主体
{
   
   

    if (left >= right)
    {
   
   
        return;
    }
    int mid = (left + right) / 2; 
    MergeSort(arr, left, mid);
    MergeSort(arr, mid + 1, right);
    Sort(arr, left, mid, right);
}

int main()        //主函数
{
   
   
    int arr[10] = {
   
   3,4,7,5,2,6,9,8,0,13};
    MergeSort(arr, 0, 9);
    return 0;
}
目录
相关文章
|
4月前
|
搜索推荐 算法 Python
如何实现归并排序算法? 要求:编写一个Python函数,输入一个无序列表,返回排序后的列表。
如何实现归并排序算法? 要求:编写一个Python函数,输入一个无序列表,返回排序后的列表。
|
18天前
|
存储 算法 搜索推荐
【数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)
【数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)
|
27天前
|
搜索推荐 算法
【数据结构】八大排序之归并排序算法
【数据结构】八大排序之归并排序算法
21 5
|
1月前
|
机器学习/深度学习 算法 搜索推荐
数据结构与算法(Java篇)笔记--归并排序
数据结构与算法(Java篇)笔记--归并排序
|
1月前
|
搜索推荐 算法 Python
python实现归并排序算法。
【2月更文挑战第9天】【2月更文挑战第24篇】python实现归并排序算法。
|
2月前
|
存储 搜索推荐 算法
【数据结构排序算法篇】----归并排序【实战演练】
【数据结构排序算法篇】----归并排序【实战演练】
27 0
|
2月前
|
搜索推荐
排序算法之七:归并排序(非递归)
排序算法之七:归并排序(非递归)
排序算法之七:归并排序(非递归)
|
2月前
|
搜索推荐 C++
【非递归版】归并排序算法(2)
【非递归版】归并排序算法(2)
20 0
|
2月前
|
搜索推荐 算法 C++
【递归版】归并排序算法(1)
【递归版】归并排序算法(1)
22 0
|
3月前
|
搜索推荐 算法
排序算法——归并排序(递归与非递归)
排序算法——归并排序(递归与非递归)