排序算法(归并排序)

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

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

空间复杂度为 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;
}
目录
相关文章
|
6天前
|
算法 前端开发 搜索推荐
前端算法之归并排序
前端算法之归并排序
13 0
|
6天前
|
搜索推荐 C语言
【C语言/数据结构】排序(归并排序|计数排序|排序算法复杂度)
【C语言/数据结构】排序(归并排序|计数排序|排序算法复杂度)
11 0
|
6天前
|
人工智能 算法 搜索推荐
归并排序——“数据结构与算法”
归并排序——“数据结构与算法”
|
6天前
|
搜索推荐 C语言 C++
【排序算法】C语言实现归并排序,包括递归和迭代两个版本
【排序算法】C语言实现归并排序,包括递归和迭代两个版本
|
7天前
|
存储 算法 搜索推荐
【数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)
【数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)
|
7天前
|
搜索推荐 算法
【数据结构】八大排序之归并排序算法
【数据结构】八大排序之归并排序算法
23 5
|
7天前
|
算法 索引
【数据结构与算法】:非递归实现快速排序、归并排序
上篇文章我们详细讲解了递归版本的快速排序,本篇我们来探究非递归实现快速排序和归并排序
【数据结构与算法】:非递归实现快速排序、归并排序
|
7天前
|
机器学习/深度学习 算法 搜索推荐
数据结构与算法(Java篇)笔记--归并排序
数据结构与算法(Java篇)笔记--归并排序
|
7天前
|
搜索推荐 算法 Python
python实现归并排序算法。
【2月更文挑战第9天】【2月更文挑战第24篇】python实现归并排序算法。
|
7天前
|
存储 搜索推荐 算法
【数据结构排序算法篇】----归并排序【实战演练】
【数据结构排序算法篇】----归并排序【实战演练】
28 0