Advertisement
GrandtherAzaMarks

QuikSort

Apr 7th, 2018
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.24 KB | None | 0 0
  1. using System;
  2. using static System.Console;
  3. namespace Sort
  4. {
  5.     class Program
  6.     {
  7.         static void quickSort(ref int[] a, int l, int r)
  8.         {
  9.             int temp;
  10.             int x = a[l + (r - l) / 2];
  11.             //запись эквивалентна (l+r)/2,
  12.             //но не вызввает переполнения на больших данных
  13.             int i = l;
  14.             int j = r;
  15.             //код в while обычно выносят в процедуру particle
  16.             while (i <= j)
  17.             {
  18.                 while (a[i] < x)
  19.                     i++;
  20.                 while (a[j] > x)
  21.                     j--;
  22.                 if (i <= j)
  23.                 {
  24.                     temp = a[i];
  25.                     a[i] = a[j];
  26.                     a[j] = temp;
  27.                     i++;
  28.                     j--;
  29.                 }
  30.             }
  31.             if (i < r)
  32.                 quickSort(ref a, i, r);
  33.             if (l < j)
  34.                 quickSort(ref a, l, j);
  35.         }
  36.  
  37.         static void Main()
  38.         {
  39.             Random rand = new Random();
  40.             // Считываем размер массива,
  41.             // который необходимо отсортировать
  42.             int h = 1;
  43.             //size = int.Parse(Console.ReadLine());
  44.             // Динамически выделяем память под
  45.             // хранение массива размера size
  46.             //считываем строку
  47.             //string str = Console.ReadLine();
  48.             //разбиваем по пробелам
  49.             //string[] mas = str.Split(' ');
  50.  
  51.             Write("Исходный массив: ");
  52.             int[] a = new int[rand.Next(1, 10)];
  53.  
  54.             for (int i = 0; i < a.Length; i++)
  55.             {
  56.                 a[i] = rand.Next(1, 101);
  57.                 Write(a[i] + " ");
  58.             }
  59.             WriteLine('\n');
  60.             quickSort(ref a, 0, a.Length - h);
  61.  
  62.             // Выводим отсортированный массив
  63.             Write("Полученный массив: ");
  64.             for (int i = 0; i < a.Length; i++)
  65.                 Write(a[i] + " ");
  66.         }
  67.     }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement