TWF

归并排序

归并排序

const int N = 1e6 + 10;

int q[N], tmp[N];

void merge_sort(int q[], int l, int r)
{
	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])tmp[k++] = q[i++];
		else tmp[k++] = q[j++];
	while (i <= mid)tmp[k++] = q[i++];
	while (j <= r)tmp[k++] = q[j++];

	for (i = l, j = 0; i <= r; i++, j++)q[i] = tmp[j];
}
posted @ 2020-01-09 12:53  fsh001  阅读(81)  评论(0编辑  收藏  举报