Поразрядная сортировка MSD в C#
Формулировка задачи:
Можете написать код поразрядной сортировки MSD в C#
Решение задачи: «Поразрядная сортировка MSD в C#»
textual
Листинг программы
class RadixSorting {
public static void sorting(int[] arr, int range, int length) {
ArrayList[] lists = new ArrayList[range];
for(int i = 0; i < range; ++i)
lists[i] = new ArrayList();
for(int step = 0; step < length; ++step) {
//распределение по спискам
for(int i = 0; i < arr.Length; ++i) {
int temp = (arr[i] % (int)Math.Pow(range, step + 1)) /
(int)Math.Pow(range, step);
lists[temp].Add(arr[i]);
}
//сборка
int k = 0;
for(int i = 0; i < range; ++i) {
for(int j = 0; j < lists[i].Count; ++j) {
arr[k++] = (int)lists[i][j];
}
}
for(int i = 0; i < range; ++i)
lists[i].Clear();
}
}
}
class Program {
static void Main(string[] args) {
int[] arr = new int[100];
Random rd = new Random();
for(int i = 0; i < arr.Length; ++i) {
arr[i] = rd.Next(0, 100);
}
System.Console.WriteLine("The array before sorting:");
foreach(double x in arr) {
System.Console.Write(x + " ");
}
RadixSorting.sorting(arr, 10, 2);
System.Console.WriteLine("\n\nThe array after sorting:");
foreach(double x in arr) {
System.Console.Write(x + " ");
}
System.Console.WriteLine("\n\nPress the <Enter> key");
System.Console.ReadLine();
}
}