如何在归并排序算法之后重新显示数组,以便显示每一步
本文关键字:显示 数组 每一步 归并排序 算法 之后 新显示 | 更新日期: 2023-09-27 18:03:42
这是我对数组进行排序的归并排序方法,它可以很好地显示排序后的数组,但是我如何显示每个部分解决的步骤呢?
public void mergeSort(string[] sortArray, int lower, int upper)
{
int middle;
if (upper == lower)
{
return;
}
else
{
middle = (lower + upper) / 2;
mergeSort(sortArray, lower, middle);
mergeSort(sortArray, middle + 1, upper);
Merge(sortArray, lower, middle + 1, upper);
}
}
我正在考虑添加
foreach (string in sortArray){txtOutput。Text += a + "'t";}
到数组的末尾,但是当我显示排序方法时,所有的部分解一起显示。变成
排序数组:1 8 7 3 1 7 3 8 1 3 7 8 1 3 7 8 8
我想显示为
部分排序数组:
1 8 7 3
1 3 7 8
排序数组:
1 3 7 8
在foreach循环之后,向输出字符串追加一个换行符(''n')。
if(lower == 0 && upper == sortArray.Length-1)
output +="Sorted Array:'n"
foreach(var a in sortedArray)
{
//Display Logic
}
这是一个简单的修复-只需将"'t"更改为"'t'n",就可以了。
为了更美观的显示,这是一个自顶向下归并排序的操作顺序示例,深度优先,左优先。竖线表示当前数组的左右两半之间的分割。显示初始状态,然后显示分裂和合并后的状态。
|4 2 8 6 0 5 1 7 3 9|
|4 2 8 6 0|5 1 7 3 9|
|4 2|8 6 0|
|4|2|
|2 4|
|8|6 0|
|6|0|
|0 6|
|0 6 8|
|0 2 4 6 8|
|5 1|7 3 9|
|5|1|
|1 5|
|7|3 9|
|3|9|
|3 9|
|3 7 9|
|1 3 5 7 9|
|0 1 2 3 4 5 6 7 8 9|
这是一个自底向上的合并排序的操作顺序的例子。竖条表示排序后的运行边界。
|4 2 8 6 0 5 1 7 3 9|
|4|2|8|6|0|5|1|7|3|9|
|2 4|6 8|0 5|1 7|3 9|
|2 4 6 8|0 1 5 7|3 9|
|0 1 2 4 5 6 7 8|3 9|
|0 1 2 3 4 5 6 7 8 9|