分治算法

29 阅读1分钟

归并排序问题 问题描述:给定一个无序的整数数组 arr,将其按照升序排列。

基本思路:

  1. 分解:把待排序的数组 arr 从中间分成两个子数组 left 和 right, 递归地对 left 和 right 两个子数组分别进行归并排序,即继续分解这两个子数组,直到子数组只包含一个元素(因为一个元素的数组天然是有序的)。
  2. 合并:当两个子数组都已经排好序后,将这两个有序的子数组合并成一个新的有序数组。通过比较两个子数组的元素,依次将较小的元素放入结果数组中,直到其中一个子数组的元素全部被放入结果数组,然后将另一个子数组中剩余的元素直接追加到结果数组末尾 。