思想
将两个有序的队列合并成一个大的有序的序列,反复操作,直到合并成一个有序的队列。
思路
一个大的无序队列,采用分治法进行排序。先将无序队列一分为二再一分为二,层层递归到只有两个数时,进行排序,然后再依次返回,在返回的时候,再次对两个有序子序列进行合并,然后层层递归合并,到最后只有一个有序的队列完毕。
此处盗图二张:
图片来源:
图解排序算法(四)之归并排序
实现
static void merge_conquer(int arry[], int left, int mid, int right, int *temp)
{
int l = left;
int r = mid + 1;
int i = 0;
for (i = 0; i < right; i++)
printf("%d ", arry[i]);
printf(