slik1977

Task4_QuickSort+Benchmark

Feb 24th, 2022 (edited)
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.35 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using BenchmarkDotNet.Attributes;
  4.  
  5. namespace Task4C
  6. {  
  7.     [MemoryDiagnoser]
  8.     public class QuickSort
  9.     {
  10.         private int[] _numbers;
  11.  
  12.         int Partition (int[] array, int start, int end)
  13.         {
  14.             int marker = start;
  15.             for ( int i = start; i <= end; i++ )
  16.             {
  17.                 if ( array[i] <= array[end] )
  18.                 {
  19.                     (array[marker], array[i]) = (array[i], array[marker]);
  20.                     marker += 1;
  21.                 }
  22.             }
  23.             return marker - 1;
  24.         }
  25.  
  26.         private void Sort (int[] array, int start, int end)
  27.         {
  28.             if ( start >= end )
  29.             {
  30.                 return;
  31.             }
  32.             int pivot = Partition (array, start, end);
  33.             Sort(array, start, pivot-1);
  34.             Sort(array, pivot+1, end);
  35.         }
  36.  
  37.         [Benchmark]
  38.         public void ArraySort()
  39.         {
  40.             Sort(_numbers, 0, _numbers.Length - 1);
  41.         }
  42.        
  43.         [IterationSetup]
  44.         public void MakeArray()
  45.         {
  46.             var number = new Random();
  47.             var arr = new int[2000];
  48.             for (var i = 0; i < arr.Length; i++) {
  49.                 arr[i] = number.Next();
  50.             }
  51.  
  52.             _numbers = arr;
  53.         }
  54.     }
  55. }
Add Comment
Please, Sign In to add comment