我有一项任务,需要工作代码。在开始之前我想了解这个问题,但我不知道如何写它。
我有一组数据,以此为例
var arr = new byte[] {5,3,1,7,8,5,3,2,6,7,9,3,2,4,2,1}
我需要将此数组分成两半,将其放入线程池中并递归执行此操作,直到我有
我不明白的是如何合并数组?我是否应该分割数组,将一个线程放入池中并阻塞直到它准备好?我如何获得线程的结果?我假设不可能在不阻塞的情况下合并数组?
这是我到目前为止所拥有的。
static void Main(string[] args)
{
var arr = new byte[] { 5, 3, 1, 7, 8, 5, 3, 2, 6, 7, 9, 3, 2, 4, 2, 1 };
var newarr = Sort(arr);
Console.Write(BitConverter.ToString(newarr));
}
static byte[] Sort(byte[] arr)
{
if (arr.Length <= 2)
return arr;
if (arr.Length == 2)
{
if (arr[0] > arr[1])
{
var t = arr[0];
arr[0] = arr[1];
arr[1] = t;
}
return arr;
}
var arr1 = arr.Take(arr.Length / 2).ToArray();
var arr2 = arr.Skip(arr1.Count()).ToArray();
//??
return arr;
}
注意:教授确实说过我们可以向其他人寻求帮助。我想我可以不问就解决这个问题,但我想得到最好的答案。线程是我的弱点(我不喜欢其他一切,数据库,二进制 io,Web 界面,只是从来没有复杂的线程)