A [] - > 1 3 5 7 2 4 6 8 //
磅= 0,中间-1 = 3,中间+ 1 = 4,UB = 7;
A = 3,B = 7,AB = 7;
第一次迭代
A = 3,B = 6,AB = 6;
第二次迭代
swap(A [ab],A [a])// int t;我将用于临时存储
1 3 5 6 2 4 7 8
B = 5,AB = 5; 排序(A,LB,中间-1); //使用冒泡排序
第3次迭代
交换(A [AB],A [A])
1 3 5 4 2 6 7 8
B = 5,AB = 4
sort(A,lb,mid-1)//使用冒泡排序
这是使用就地合并进行合并排序的正确方法吗?这是我第一次尝试进行合并。如果不正确,有人可以建议我。
答案 0 :(得分:0)
不确定您是否拥有Mergesort算法。
在第一阶段使用Mergesort,您需要将数组拆分为子数组。
A = [1, 3, 5, 7, 2, 4, 6, 8]
A1 = [1, 3, 5, 7], A2 = [2, 4, 6, 8]
A11 = [1,3], A12 = [5,7], A21 = [2,4], A22 = [6,8]
... // till you have an arrays looks like this:
A1 = [1], A2 = [3], A3 = [5], A4 = [7], A5 = [2], A6 = [4], A7 = [6], A8 = [8]
然后以相反的顺序合并,并仅比较两个数组中的第一个元素(将最低元素放在新数组中)。
[1,3], [5,7], [2,4], [6,8]
[1,3,5,7], [2,4,6,8]
[1,2,3,4,5,6,7,8]