C# Быстрая сортировка, подсчет сравнений и замен. Засечение времени

TimeLordRu

Известный
Автор темы
151
38
программа 1:
 class Quick
    {
        public static void sort(int[] arr, long first, long last)
        {
            double p = arr[(last - first) / 2 + first];
            int 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) sort(arr, first, j);
            if (i < last) sort(arr, i, last);
        }
    }
class Program
    {
      static void Main(string[] args)
        {
           int chislo;
            Console.Write("Введите размерность массива(целочисленное неотрицательное число): ");
            int n = int_number();          
            int[] quick = new int[n]; // быстрый
            int quickc = 0; // переменная для подсчета ифов и перестановок

            Random rnd = new Random();
            for (int i = 0; i < n; i++)
            {
                do
                {
                    chislo = rnd.Next(0, 1000000);

                }
                while (chislo % 2 == 1);
                quick[i] = chislo;

                Console.Write($"{i + 1} = {chislo}; ");
            }
           Quick.sort(quick, 0, n - 1);
      }
}
Нужно подсчитать все if'ы и перестановки. Я несколько способов перепробовал, но они либо выдавали 0, либо бред. Не знаете как сделать?




C#:
 DateTime StartTime = DateTime.Now;
            // выбором------------------------------------------------------------------
            for (int i = 0; i < n - 1; i++)
            {
                int min = i;
                for (int j = i + 1; j < n; j++)
                {
                    choisec++;
                    if (choise[j] < choise[min])
                    {
                        min = j;
                    }
                }
                choisec++;
                int x = choise[min];
                choise[min] = choise[i];
                choise[i] = x;
            }
            TimeSpan ts = DateTime.Now.Subtract(StartTime);
            string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
                    ts.Hours, ts.Minutes, ts.Seconds,
                    ts.Milliseconds / 10);
            Console.WriteLine(elapsedTime, "RunTime");
Выводит нули, даже при размерности массива в 1000. Что-то я сделал неправильно?
 

vadimka0216

Известный
38
63
1631793411906.png
1631793483906.png