Если я понимаю вашу проблему, причина того, что вы получаете те же значения (а не снимок), заключается в том, что вы храните ссылку на массив, а не копию самих значений.
Массивы ссылочные типы , поэтому, когда вы присваиваете их другой переменной, вы копируете только справочную , а не содержимое.Если вы измените содержимое, все ссылки будут отражать, что
Вы можете использовать Array.Copy
для копирования значений в данный момент времени из originalArray
...
var tempVal = originalArray[smallest];
originalArray[smallest] = originalArray[i];
originalArray[i] = tempVal;
// Create some new memory
iterations[i] = new int[originalArray.Length];
// Copy the contents
Array.Copy(originalArray, iterations[i], originalArray.Length);
Примечание это полностью не проверено, и я не знаю, работает ли остальная часть вашего кода, как предполагалось
ДополнительноРесурсы
Метод Array.Copy
Копирует диапазон элементов из одного массива в другой массив и выполняет приведение типов и упаковку по мере необходимости.
Массивы (Руководство по программированию в C #)
Типы массивов - это ссылочные типы, полученные из абстрактного базового типа Array .Поскольку этот тип реализует IEnumerable и IEnumerable, вы можете использовать итерацию foreach для всех массивов в C #.