双方向選択ソートを並行して実装するコードを書きました。私は c# と parallel.invoke 関数を使用しました。2 つのループが並行して呼び出され、1 つは最小値を見つけ、もう 1 つは最大値を見つけました。それでも、それはソートされません。各ループは他のループに存在するデータに依存しているため、このタイプの並べ替えは並行して処理できないため、問題があるのではないかと思っていましたか?...または単に私のコードに何か問題がありますか?
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;
}
});