

Кстати, если элементы массива не слишком длинные (помещаются в операнд команды XOR), то предки завещали нам менять их в памяти прямо по месту, тремя команами XOR - есть такой трюк. Но это уже, наверное, не для C#.ну не факт.. новые поколения дотнет вернулись к железу лицом.. на грани ассемблерных вставок )).. но естественно тут дело будет в типах данных )))
//...some code omitted тоже легко вынести в лямбду, тогда тело цикла вырождается в одну строку. и код читаемый, поддерживаемый, тестируемый
//...declarations and initializations omitted
for(var stop=false; !stop; )
{
//...some code omitted
if (!(stop = (j == i))
(i, j) = (j, i);
}
(a, b) = (b, a);
{
swap(i, j);
i = j;
}swap вы используете?i = j; ???
//...declarations and initializations omitted
for(var stop=false; !stop; )
{
//...some code omitted
if (!(stop = (j == i))
{
swap(i, j);
i = j;
}
}но стоит тестить.. просто не люблю многострочность ))