Другие языки программирования и технологии

c#. Сортировка массива в отдельном методе. Консольное приложение.

Доброго времени суток.
У меня имеется метод, назовем его Создание_Массива (), который автоматически заполняет массив.
Требуется создать метод, который будет сортировать этот массив_1 по принципу рандома без повторений.
Как такое объявить? И можно ли создать новый вспомогательный массив_2, который будет содержать в себе все элементы сортированного массива_1? Если да, то каким образом его заполнить?
(Обычный c# туговато понимаю, объясните, пожалуйста, на консольном приложении) .
using System;
namespace example {
class Program {
static void Main() {
int[] arr = MyRandom();
Print(arr);
Array.Sort(arr);
Print(arr);
Console.ReadKey();
}
public static int[] MyRandom(int beg = 1, int end = 25) {
int[] a = new int[end];
int tmp;
Random rand = new Random();
for (int i = 0, j; i < end; ++i) {
tmp = rand.Next(beg, end + 1);
for (j = 0; j <= i; ++j) {
if (tmp == a[j]) {
--i;
break;
}
}
if (j > i) a[i] = tmp;
}
return a;
}
public static void Print(int[] arr) {
foreach (var a in arr) Console.Write("{0,3}", a);
Console.WriteLine();
}
}
}
Женя Кожин
Женя Кожин
51 005
Лучший ответ
Александр Волков Спасибо. Ваш ответ помог мне продвинуться дальше, но проблема повторений осталась все же.
Написал код, аналогичный вашему. По логике - мы задаем значение и сверяем с предыдущими. Но повторения все равно имеются, после 20 эл. где-то. Не могли бы вы мне помочь?
Карты () - создание Карта_1, 52 эл. , Карта - пустой массив, в который заносятся значения перемешанного массива.
Карты (); Random rand = new Random();
for (int i = 0, j; i < Карта_1.Length;i++) { Карта [i] = Карта_1[rand.Next(0, Карта_1.Length)];
for (j = 0; j < i; j++) { while (Карта [i] == Карта [j]) { Карта [i] = Карта_1[rand.Next(0, Карта_1.Length)]; } } Console.WriteLine(Карта [i]); }
Сортировать массив по принципу рандома невозможно. Дело в том что эквивалент слову сортировка - это упорядочивание, слово порядок противоречит термину случайный или независимый или рандомный. Если ты хочешь поменять данные в массиве в случайном порядке и твой массив одномерный - т. е. это список, то лучше использую для хранения массива класс List<>, в нем содержится функция по изменению порядка элементов в списке. Просто вызови её для каждого элемента последовательно, можно хоть для всех Count элементов массива, ты уже получишь случайный порядок следования ( с int параметром для новой позиции для созданного класса Rand и каждый раз вызывая для него Next - получения следующего случного значения в области значений которую ты укажешь при инициализации класса) , даже если какие-то элементы и не поменяются местами.