C中的合并排序函数

核冬天27

我有以下一段代码,它代表了一个合并排序函数

/* perform merge sort */
void merge_sort(int arr[], int left, int right) {
    if (left < right) {
        int middle = left + (right - left) / 2;
        merge_sort(arr, left, middle);
        merge_sort(arr, middle + 1, right);
        merge(arr, left, middle, right);
    }
}

这有什么用merge_sort(arr, middle + 1, right);

弗雷德·拉森

归并排序算法的基本思想是将待排序的序列分成两半,每一半排序,然后将它们合并在一起。这通常是递归完成的,就像在这种情况下一样。因此,必须有两个递归调用,每个序列的一半调用一个。

如果merge_sort(arr, middle+1, right);调用不存在,则算法将不完整并且排序将不起作用。

作为实验,您可以尝试使用您发布的合并排序功能编写示例程序。在有问题的行和没有问题的行中尝试一下,看看你会得到什么结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章