使用就地合并进行合并排序
A[]-> 1 3 5 7 2 4 6 8 //
lb=0,mid-1=3,mid+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,磅,中1); // 使用冒泡排序
第三次迭代
swap(A[ab],A[a])
1 3 5 4 2 6 7 8
b=5,ab=4
sort(A,lb,mid-1) // 使用冒泡排序
Is这是使用就地合并进行合并排序的正确方法。这是我第一次尝试就地合并。如果这不是正确的方法,有人可以建议我。
A[] -> 1 3 5 7 2 4 6 8 //
lb=0,mid-1=3,mid+1=4,ub=7;
a=3,b=7,ab=7;
1st iteration
a=3,b=6,ab=6;
2nd iteration
swap(A[ab],A[a]) // int t; t i'll using for temporary storage
1 3 5 6 2 4 7 8
b=5,ab=5;
sort(A,lb,mid-1); // using bubble sort
3rd iteration
swap(A[ab],A[a])
1 3 5 4 2 6 7 8
b=5,ab=4
sort(A,lb,mid-1) // using bubble sort
Is this correct approach for Merge sort using inplace merging. This is my first attempt about inplace merging.If it is not correct approach someone can suggest me.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不确定你有合并排序算法。
在第一阶段使用合并排序,您需要将数组拆分为子数组。
然后以相反的顺序合并,并仅比较两个数组中的第一个元素(将最低元素放入新数组中)。
Not sure that you have Mergesort algorithm.
Using Mergesort at first phase you need to split you array into subarrays.
Then you merging in reverse order, and compare only first elements in both arrays (put lowest element in new array).