归并排序模板

本文最后更新于:7 个月前

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void merge_sort(int a[] , int l ,int r){
if (l == r) return ;
//划分区间,并且将左区间和右区间归并排好序
int mid = l + r >> 1;
merge_sort(a,l,mid);
merge_sort(a,mid + 1, r);
//归并两个区间
int k = 0 , i = l , j = mid + 1;
while (i <= mid && j <= r){
if (a[i] <= a[j]) t[k++] = a[i++];
else t[k++] = a[j++];
}
while (i <= mid) t[k++] = a[i++];
while (j <= r) t[k++] = a[j++];
//拷贝回原数组
for(int i = 0, j = l; j <= r ; j++, i ++) a[j] = t[i];
}

归并排序模板
http://example.com/2022/09/25/归并排序模板/
作者
zzh
发布于
2022年9月25日
更新于
2022年9月25日
许可协议
原文链接: HTTPS://ZHANGZHIHAO-BLOG.GITHUB.IO
版权声明: 转载请注明出处!