我正在做一个项目,在这个项目中,我必须并行处理一些排序算法并将并行结果与顺序算法进行比较。我尝试使用Parallel.For循环并行化插入排序,但无法正常工作。数组的第一部分排序良好,另一部分从错误的索引开始再次对数组进行排序。
Parallel.For(1, myarray.Length, x =>
{
int cur = myarray[x];
int j = x;
while (j > 0 && cur < myarray[j - 1])
{
myarray[j] = myarray[j - 1];
j--;
}
myarray[j] = cur;
}
我的结果中存在[0-1000]个错误的500个随机元素的结果:
...... 992 992 995 997 224 225 228 228 231 231 233 234 235 237 ......
仍然是500个元素,但是其中一部分被移到了最后。 因此它可以工作,但是有些线程尝试根据我猜的索引再次对其进行排序。我该如何解决?