基础算法| 归并排序

Posted 有理想、有本领、有担当的有志青年

tags:

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

归并排序

分治思想

确定中间为分界点

mid = (l+r)>>1

递归排序左右两端

归并,合二为一


双指针法,比较当前所指数大小,小的填入临时数组,相应的指针前进

模板

void merge_sort(int q[], int l, int r) 
	int temp[10000];
    if (l >= r) return;

    int mid = l + r >> 1;

    merge_sort(q, l, mid), merge_sort(q, mid + 1, r);

    int k = 0, i = l, j = mid + 1;


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

    while (i <= mid) temp[k++] = q[i++];
    while (j <= r) temp[k++] = q[j++];

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


以上是关于基础算法| 归并排序的主要内容,如果未能解决你的问题,请参考以下文章

算法系列01:快速排序&&归并排序

排序算法专题:快排和归并排序

重温基础算法内部排序之归并排序法

重温基础算法内部排序之归并排序法

基础算法系列之排序算法[快速排序,归并排序,二分查找]

算法笔记——归并排序及其基础面试题