|
// Merge Sort
(*
先将数组序列对半拆分,直到子序列拆分成只有单个元素;
然后对单个元素,两两比较大小排序,再逐一合并成更长的序列。
*)
IF #Start < #End THEN // 拆分成单个元素
#Mid := (#Start + #End) / 2; // 对半拆分
// 递归调用
"76_归并排序算法"(Asc_Des := #Asc_Des,
Start := #Start,
End := #Mid,
Sort_Arr := #Sort_Arr);
"76_归并排序算法"(Asc_Des := #Asc_Des,
Start := #Mid + 1,
End := #End,
Sort_Arr := #Sort_Arr);
// 序列合并
"Merge"(asc := #Asc_Des,
start := #Start,
mid := #Mid,
end := #End,
ARR := #Sort_Arr);
END_IF;
|
|