归并排序(Merge Sort)是一种基于分治思想的排序算法,它的核心思想是将待排序数组分成两个子数组,分别对它们进行排序,然后将已排序的子数组合并成一个有序的数组。归并排序的时间复杂度为O(NlogN),其中N是待排序数组的长度。归并排序的优点是稳定、时间复杂度低,缺点是需要额外的空间来存储临时数组。
代码实现中,归并排序主要包括两个步骤:分割数组和合并数组。分割数组的过程是将待排序数组不断地二分,直到每个子数组只有一个元素为止。合并数组的过程是将已排序的子数组按照顺序合并成一个有序的数组。
下面是归并排序的代码实现:
void merge_sort(int *array, int left, int right) { if (left >= right) { return; } int middle = (left + right) / 2; merge_sort(array, left, middle); merge_sort(array, middle + 1, right); merge(array, left, right, middle); }