Ведите статистику об алгоритмах сортировки - PullRequest
0 голосов
/ 12 мая 2018

У меня есть домашнее задание по объектно-ориентированному программированию на c #. часть моей домашней работы, мне нужно сделать 2 разных алгоритма сортировки и поместить в них случайные числа и наблюдать статистику о 2 разных алгоритмах. о том, что мои учителя сказали мне по электронной почте " Класс не статической сортировки может хранить статистику о том, сколько сортировать, как быстро, как минимум, как минимум, как максимум .. "

Итак, есть мои алгоритмы сортировки, такие как вставка и подсчет сортировки. Подскажите пожалуйста как мне вести статистику по сортировке.

Не забудьте, что главная тема моей домашней работы - ООП.

class InsertionSorting : Sort    
{
    public override List<int> Sorting(List<int> SortList)
    {

        for ( int i=0; i<SortList.Count-1; i++)
        {
            for (int j= i+1; j>0; j--)
            {
                if (SortList[j-1] > SortList [j])
                {
                    int temp = SortList[j - 1];
                    SortList[j - 1] = SortList[j];
                    SortList[j] = temp;
                }
            }                                
        }
        return SortList;
    }
}



class CountSorting : Sort
{
    public override List<int> Sorting(List<int> SortList)
    {
        int n = SortList.Count;
        List<int> output = new List<int>();
        List<int> count = new List<int>();

        for (int i = 0; i < 1000; ++i)
        {
            count.Add(0);
            output.Add(0);                
        }

        for (int i = 0; i < n; ++i)
            ++count[SortList[i]];

        for (int i = 1; i <= 999; ++i)
            count[i] += count[i - 1];

        for (int i = 0; i < n; ++i)
        {
            output[count[SortList[i]] - 1] = SortList[i];
            --count[SortList[i]];
        }

        for (int i = 0; i < SortList.Count; i++)
            SortList[i] = output[i];

        return SortList;
    }
}

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Ваш профессор рассказал вам, как, когда они сказали «... статистика о сортировке, сколько чисел, как быстро, мин, макс, среднее ...». Лучше всего вам создать класс, такой как «Статистика», который содержит метод, который позволяет вводить данные пользователем либо через аргументы, либо через прямую подсказку пользователя. Переменные должны быть такими же простыми, как «количество чисел для сортировки», «нижние границы диапазона чисел», «верхняя граница диапазона чисел» и, если автоматизирован процесс тестирования, «количество повторений».

Получив ответы на эти вопросы, вы должны запустить с ними два алгоритма сортировки (например, использовать генератор случайных чисел, а также max и min для генерации списка). Ваши алгоритмы сортировки нуждаются в дополнении, чтобы "регистрировать" эту статистику. Скорее всего, переменная, которая отслеживает количество обменов позициями, произошедших в массиве.

Я не собираюсь выписывать вашу домашнюю работу для вас (это ваша работа, и вы должны справиться с ней.) Но если у вас есть еще вопросы к этому, я, возможно, смогу направить вас в правильном направлении если это слишком расплывчато и вы все еще боретесь.

0 голосов
/ 12 мая 2018

Ваша сортировка выполняется в двух классах - InsertionSorting и CountSorting.

Если вы хотите отслеживать статистику, объявлять переменную в классе и увеличивать ее при каждой итерации и т. Д., И т. Д. Затем вы можете увидеть, какая из них более эффективна.

* 1005 например *

class InsertionSorting : Sort    
{
    private int iterations = 0
    ...
        for (int j= i+1; j>0; j--)
        {
            if (SortList[j-1] > SortList [j])
            {
                iterations++
                ...

Вы также можете объявить startTime и endTime, что позволит вам определить время, необходимое для сортировки. В начале «Сортировка» запишите время начала и непосредственно перед возвратом запишите время окончания. Напишите метод сообщения о разнице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...