static public async Task Sort8Async(T[] Arr, IMerger <T> merger = null) { if (merger == null) { merger = new Merger <T>(); } var half = Arr.Length >> 1; var tail = Arr.Length - half; var o1 = new ParallelSort <T>(); var o2 = new ParallelSort <T>(); await o1._Sort4Async(Arr, 0, half, merger); await o2._Sort4Async(Arr, half, tail, merger); await Task.Run(() => { merger.Merge(Arr, 0, half, tail); }); }
static public async Task Sort4Async(T[] Arr, IMerger <T> merger = null) { var o = new ParallelSort <T>(); await o._Sort4Async(Arr, 0, Arr.Length, merger); }