Поразрядная трехпутевая сортировка - 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 Test {
   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("Массив до сортировки:");
      foreach(double x in arr) {
         System.Console.Write(x + " ");
      }
      RadixSorting.sorting(arr, 10, 2);
      System.Console.WriteLine("\n\nМассив после сортировки:");
      foreach(double x in arr) {
         System.Console.Write(x + " ");
      }
      System.Console.WriteLine("\n\nНажмите <Enter>");
      System.Console.ReadLine();
   }

Оцени полезность:

9   голосов , оценка 4.444 из 5
Похожие ответы