Статья о прямой сортировке Сортировка List
Для случайного перемешивания некоторого списка (массива) данных любого типа следует использовать обобщения. Для этого создадим обобщенный метод MakeMixList<t>, который в качестве входного параметра будет принимать обобщенный список интерфейса IList:
static class Ran
{
public static void MakeMixList<t>(IList<t> list)
{
Random r = new Random();
SortedList<int, t> mixedList = new SortedList<int, t>();
foreach (t item in list)
mixedList.Add(r.Next(), item);
list.Clear();
for (int i = 0; i < mixedList.Count; i++)
{
list.Add(mixedList.Values[i]);
}
//mixedList.Clear();
}
}
Данный код настолько прост, что объяснению, пожалуй, подлежит лишь запись:
SortedList<int, t> mixedList = new SortedList<int, t>();
foreach (t item in list)
mixedList.Add(r.Next(), item);
Создаем сортируемый список и набиваем в него значения из целевого списка. Тип SortedList устроен так, что при добавлении нового элемента, он (элемент) помещается не в конец списка элементов, а между ними, обеспечивая моментальную автоматическую сортировку списка. Таким образом, нам даже не потребуется вручную выполнять сортировку, она уже выполняется при добавлении нового элемента.
А потом, просто переносим все элементы обратно в целевой список, естественно, теперь уже в ином – отсортированном, порядке.
Для использования данного метода напишем тестовый код:
class Program
{
static void Main(string[] args)
{
//заполнение списка
List<string> myList = new List<string>();
for(int i = 0; i < 100; i++)
myList.Add(i.ToString());
//перемешивание списка
Ran.MakeMixList(myList);
Console.ReadKey();
}
}
Естественно, применение обобщений позволяет нам сортировать не только списки типа string, но и любого другого типа, в том числе и пользовательского.
Статья о прямой сортировке Сортировка List