Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# heapSort ,System.Timers; to check algorithm time

Tags:

c#

timer

heapsort

I have to check HeapSort algorithm time in C# , my problem is that I Know I must use System.Timers , because I don't know how to measures the algorithm time. I have to check the algorithm time for table contains 1000 ,10 000 , 100 000 and 1000 000 integers.

Help me good people please.

This is the code:


    using System;

namespace Sort
{
    class Program
    {
        public static void Adjust(int[] list, int i, int m)
        {
            int Temp = list[i];
            int j = i * 2 + 1;

            while (j <= m)
            {
                if (j < m)
                    if (list[j] < list[j + 1])
                        j = j + 1;
                if (Temp < list[j])
                {
                    list[i] = list[j];
                    i = j;
                    j = 2 * i + 1;
                }
                else
                {
                    j = m + 1;
                }
            }

            list[i] = Temp;
        }

        public static void HeapSort(int[] list)
        {
            int i;
            //Boulding a heap
            for (i = (list.Length - 1) / 2; i >= 0; i--)
                Adjust(list, i, list.Length - 1);

            for (i = list.Length - 1; i >= 1; i--)
            {
                int Temp = list[0];
                list[0] = list[i];
                list[i] = Temp;
                Adjust(list, 0, i - 1);
            }
        }

        static void Main(string[] args)
        {
            Console.Title = "HeapSort";
            int i;
            int[] a = { 12, 3, -12, 27, 34, 23, 1, 81, 45,
                    17, 9, 23, 11, 4, 121 };
            Console.WriteLine("Data before sort ");
            for (i = 0; i < a.Length; i++)
                Console.Write(" {0} ", a[i]);
            Console.WriteLine();
            HeapSort(a);
            Console.WriteLine("Data after sort");
            for (i = 0; i < a.Length; i++)
                Console.Write(" {0} ", a[i]);
            Console.ReadLine();
        }
    }
}

I've write this with You help , does is good ?



using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics;

namespace Sort { class Program {

    public static void Adjust(int[] list, int i, int m)
    {
        int Temp = list[i];
        int j = i * 2 + 1;

        while (j <= m)
        {

            if (j < m)
                if (list[j] < list[j + 1])
                    j = j + 1;


            if (Temp < list[j])
            {
                list[i] = list[j];
                i = j;
                j = 2 * i + 1;
            }
            else
            {
                j = m + 1;
            }
        }

        list[i] = Temp;
    }





    public static void HeapSort (int[] list)

{ int i; //Boulding a heap for (i = (list.Length - 1) / 2;i >=0;i--) Adjust (list, i, list.Length - 1);

for ( i = list.Length - 1; i >= 1; i--)
{
    int Temp = list [0];
    list [0] = list [i];
    list [i] = Temp;
    Adjust (list, 0, i - 1);
}

}

    static void Main(string[] args)
    {
        Console.Title = "HeapSort";
        int i;
        Random myRandom = new Random();//Creating instance of class Random
        Stopwatch myTime = new Stopwatch(); //variable for time measurement




        int[] a = new int[1000]; //table contents 1000 variables


        for (i = 0; i < a.Length; i++)
            a[i] = myRandom.Next(100);

        Console.WriteLine("Data before sort ");
        for (i = 0; i < a.Length; i++)
            Console.Write(" {0} ", a[i]);
        Console.WriteLine();
        myTime.Start();
        HeapSort(a);
        myTime.Stop();

        string TimeEl = myTime.Elapsed.ToString();

        Console.WriteLine("Data after sort");
        for (i = 0; i < a.Length; i++)
            Console.Write(" {0} ", a[i]);
        Console.WriteLine();
        Console.WriteLine();
        Console.WriteLine("time elapsed: {0} ", TimeEl);
        Console.ReadLine();




    }


    }
}

like image 598
Konrad Avatar asked Jul 30 '26 17:07

Konrad


2 Answers

If you're looking for time measurements, use the Stopwatch class.

This allows you to easily measure some time using the Start() and Stop() method. The Elapsed property will then tell you how long the operation took.

like image 138
Pieter van Ginkel Avatar answered Aug 02 '26 08:08

Pieter van Ginkel


You could use the Stopwatch class to measure time:

var watch = Stopwatch.StartNew();
SomeFunctionThatCallsYourAlgorithm();
watch.Stop();
Console.WriteLine("algorithm execution time: {0}ms", watch.ElapsedMilliseconds);
like image 35
Darin Dimitrov Avatar answered Aug 02 '26 09:08

Darin Dimitrov



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!