Поиск по этому блогу

воскресенье, 20 мая 2012 г.

Перемешивание списка

Иногда бывает нужно перемешать(отсортировать) определённый список или массив данных в случайном порядке.
Вот один вариант решения данной задачи:

    class Randoming
    {
        public static void MixList<t>(IList<t> list) 
        {
            Random r = new Random();
            //Создаем сортируемый список и набиваем в него значения из 
            //целевого списка. Тип SortedList устроен так, что при добавлении 
            //нового элемента, он (элемент) помещается не в конец списка 
            //элементов, а между ними, обеспечивая моментальную автоматическую 
            //сортировку списка
            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]);
            }  
        }
    }
        
static void Main(string[] args)
        {
            Console.WriteLine("Сейчас будет рандомная сортировка");
            List<string> myList = new List<string>();
            //List<string> result = new List<string>();
            for (int i = 0; i < 50; i++)
                myList.Add(i.ToString());
            Randoming.MixList(myList);
            foreach(var ml in myList)
            {
                //result.Add(ml);
                Console.WriteLine(ml);
            }
            //Console.WriteLine(result);
            Console.ReadLine();
        }

Комментариев нет:

Отправить комментарий