我编写了代码来并行实现双向选择排序。我使用了 c# 和 parallel.invoke 函数。并行调用 2 个循环,一个查找最小值,一个查找最大值。然而,它没有排序。我想知道问题出在哪里,因为这种类型的排序无法并行处理,因为每个循环都依赖于另一个循环中存在的数据?......或者我的代码有什么问题吗?
Parallel.Invoke(
() =>
{
for (int i=0; i < array.Length / 2; i++)
{
int m;
int min = i;
for (m = i + 1; m < array.Length - 1; m++)
if (array[m] < array[min])
min = m;
//swap
int temp = array[min];
array[min] = array[m];
array[m] = temp;
}
},
() =>
{
for (int m = 0; m < array.Length / 2; m++)
{
int length = array.Length - 1;
int max = length - m;
int k;
for (k = length--; k > 0; k--)
if (array[k] > array[max])
max = k;
//swap
int temp = array[max];
array[max] = array[k];
array[k] = temp;
}
});