题目:给定一个包含n个元素的一维线性序列a[left:right],对这n个元素按照非递减顺序排序。设a=[23,5,9,16,30,25,17,18],采用基于分治策略的合并排序算法解决该问题。
(a)简述合并排序算法基本思想以及步骤。
(b)写出算法实现代码并截屏程序的运行结果。
(c)写出该算法所需计算时间的递归方程,并写出求解结果。
(a)合并排序算法基本思路:
首先将n个待排序元素分成两个规模大致相同的子数组。如果子数组规模依然较大(不为单元素时),那么继续分割子数组,当子数组只包含单元素时,认为单元素数组本身已经排序好,这时将相邻的两个有序子数组两两合并成所要求的有序序列,算法终止。
步骤:
-
初始化时,left=0,right=7.先将待排序数组分割成两个规模一样的子数组,i=(left+right)/2=3,分割位置为3,分成两个子数组a[0:3],a[4:7];
对于左子数组a[0:3],left=0,right=3.继续分割,i=(left+right)/2=1,分割位置为1,得到a[0:1],a[2:3]两个数组。
对于a[0:1],a[2:3]两个数组



