Сортировать элементы массива (размера 10) с помощью поразрядной сортировки - C#
Формулировка задачи:
Сортировать элементы массива(размера 10) с помощью поразрядной сортировки, не писав методы и классы, т.е. всё сразу в Main
Решение задачи: «Сортировать элементы массива (размера 10) с помощью поразрядной сортировки»
textual
Листинг программы
Random random = new Random();
int[] array = new int[10];
for (int i = 0; i < array.Length; i++)
{
array[i] = random.Next(99);
Console.Write("{0,3}", array[i]);
}
int range = 10, length = 2; //range - алфавит(10 цифр) length - максимальная длина одного числа
ArrayList[] lists = new ArrayList[range];
for (int i = 0; i < range; ++i) //Создаем пустые списки, количество которых равно числу range.
lists[i] = new ArrayList();
for (int step = 0; step < length; ++step) //проходимся по разрядам чисел
{
for (int i = 0; i < array.Length; ++i) //и раскидываем числа по спискам, в соответствии с рассматриваемым разрядом
{
int temp = (array[i] % (int)Math.Pow(range, step + 1)) // выделяем из числа только текущий разряд
(int)Math.Pow(range, step);
lists[temp].Add(array[i]);
}
int k = 0;
//и снова собираем числа из списков в массив
for (int i = 0; i < range; ++i)
{
for (int j = 0; j < lists[i].Count; ++j)
{
array[k++] = (int)lists[i][j];
}
}
//очистка списков
for (int i = 0; i < range; ++i)
lists[i].Clear();
}
Console.WriteLine();
for (int i = 0; i < array.Length; i++)
{
Console.Write("{0,3}", array[i]);
}
Console.ReadKey();