Advertisement
alidzhikov

SortArrayOfNumbers

May 7th, 2015
408
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.78 KB | None | 0 0
  1. using System;
  2. using System.Collections.Concurrent;
  3.  
  4. class SortArrayOfNumbers
  5. {
  6.     static void Main()
  7.     {
  8.         string inputLine = Console.ReadLine();
  9.  
  10.         string[] numbersAsStrings = inputLine.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
  11.         int[] numbers = new int[numbersAsStrings.Length];
  12.         for (int i = 0; i < numbers.Length; i++)
  13.         {
  14.             numbers[i] = int.Parse(numbersAsStrings[i]);
  15.         }
  16.  
  17.         QuickSort(numbers, 0, numbers.Length);
  18.         Print(numbers);
  19.     }
  20.  
  21.     private static void Print(int[] numbers)
  22.     {
  23.         foreach (int number in numbers)
  24.         {
  25.             Console.Write("{0} ", number);
  26.         }
  27.         Console.WriteLine();
  28.     }
  29.  
  30.     private static void QuickSort(int[] numbers, int left, int right)
  31.     {
  32.         if (left < right)
  33.         {
  34.             int pivot = Partition(numbers, left, right);
  35.  
  36.             QuickSort(numbers, left, pivot - 1);
  37.             QuickSort(numbers, pivot, right);
  38.         }
  39.     }
  40.  
  41.     private static int Partition(int[] numbers, int left, int right)
  42.     {
  43.         int start = left;
  44.         int pivot = numbers[start];
  45.         left++;
  46.         right--;
  47.  
  48.         while (true)
  49.         {
  50.             while (left <= right && numbers[left] <= pivot)
  51.             {
  52.                 left++;
  53.             }
  54.             while (left <= right && numbers[right] > pivot)
  55.             {
  56.                 right--;
  57.             }
  58.  
  59.             if (left > right)
  60.             {
  61.                 numbers[start] = numbers[left - 1];
  62.                 numbers[left - 1] = pivot;
  63.  
  64.                 return left;
  65.             }
  66.  
  67.             int temp = numbers[left];
  68.             numbers[left] = numbers[right];
  69.             numbers[right] = temp;
  70.         }
  71.     }
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement