暑假集训的时候就有接触到归并排序,但是当时并没什么好好地去学习。开学之后数据结构老师提了好几次归并排序,我发现模板代码我已经忘的一干二净了。于是这两天重新学了一遍。
所谓归并排序,就是将两个排好序的序列归并在一起,形成一个新序列。
那么,如何得到排好序的序列呢,这里就体现了分治的思想。
我们可以将一个序列,分成两个,四个,八个….分到每个序列只有一个元素。那么这些序列就都是排好序的(因为每个序列只有一个元素啊)。
这之后,再将这些序列两个两个归并起来。
这样先分后合,就从初始的乱序序列变成归并排序后的有序序列。
主要需要三个函数:一个函数用来排序,一个用来分序列,另一个用来申请与释放空间.
归并排序代码:
深入了解后可以发现,我们虽然说归并排序是先分解再归并。
但是在实际过程中,是边分解边归并。