Быстрая сортировка в C# (Csharp)

Автор: http://devoid.com.ua/, Макагон Сергей

Алгоритмы сортировки C# (Csharp)

Быстрая сортировка в C# (Csharp)

Пошаговое описание алгоритма>

1. Из массива выбирается элемент a[i]. Как правило, в качестве этого элемента берется центральный элемент массива.

2. Остальные элементы распределяются таким образом, чтобы слева от a[i] оказались все элементы, меньшие или равные a[i]. Элементы, большие или равные a[i], помещаются справа.

3. Производится проверка количества элементов в левой и правой частях массива. Если какая-либо часть (или обе части) содержит более двух элементов, то для этой части (или частей) запускается та же процедура сортировки с помощью рекурсивного вызова.


Реализация на C#

Класс QuickSorting, содержащий функцию быстрой сортировки, и класс Test для тестирования этой функции:
class QuickSorting {
   public static void sorting(double[] arr, long first, long last) {
      double p = arr[(last - first)/2 + first];
      double temp;
      long i = first, j = last;
      while(i <= j) {
         while(arr[i] < p && i <= last)  ++i;
         while(arr[j] > p && j >= first) --j;
            if(i <= j) {
               temp = arr[i];
               arr[i] = arr[j];
               arr[j] = temp;
               ++i; --j;
            }
      }
      if(j > first) sorting(arr, first, j);
      if(i < last)  sorting(arr, i, last);
   }
}
class Test {
   static void Main(string[] args) {
      double[] arr = new double[100];
      //заполняем массив случайными числами
      Random rd = new Random();
      for(int i = 0; i < arr.Length; ++i) {
         arr[i] = rd.Next(1, 101);
      }
      System.Console.WriteLine("The array before sorting:");
      foreach(double x in arr) {
         System.Console.Write(x + " ");
      }
      //сортировка
      QuickSorting.sorting(arr, 0, arr.Length - 1);
      System.Console.WriteLine("nnThe array after sorting:");
      foreach(double x in arr) {
         System.Console.Write(x + " ");
      }
      System.Console.WriteLine("nnPress the <Enter> key");
      System.Console.ReadLine();
   }
}



Опубликовал admin
18 Дек, Вторник 2007г.



Программирование для чайников.