Быстрая сортировка неправильной сложности в C # - PullRequest
0 голосов
/ 27 октября 2019

Я анализирую алгоритмы сортировки и столкнулся с проблемой быстрой сортировки. Ища некоторые диаграммы в Интернете, я увидел, что моя диаграмма значительно отличается от других диаграмм, и я хочу знать, почему.

Это мой код:

static int Particao(int[] vet, int min, int max, int modo)
{
    int i = min;
    int j = max;            
    int pivot;

    if (modo == 0)
        pivot = vet[(min + max) / 2];
    else
        pivot = vet[min];            
    while (i <= j)
    {
        while (vet[i] < pivot)
            i++;
        while (vet[j] > pivot)
            j--;
        if (i <= j)
        {
            int aux = vet[i];
            vet[i] = vet[j];
            vet[j] = aux;
            i++;
            j--;
        }
    };

    return i;
}

static void QuickSort(int[] vet, int ini, int fim)
{
    int pivo = Particao(vet, ini, fim, 0);

    if (ini < pivo - 1)
        QuickSort(vet, ini, pivo - 1);
    if (pivo < fim)
        QuickSort(vet, pivo, fim);            

}

Мой график (время указано в мс и умножено на 1000):

Quick Sort

Спасибо =)

1 Ответ

0 голосов
/ 27 октября 2019

Ваш график отличается от других графиков из-за различий в измерениях. На других диаграммах было гораздо больше точек данных и много усредненных измерений, чтобы исключить ошибки.

Ваша диаграмма имеет только 6 точек данных с 1 измерением в каждом, и из этого довольно сложно что-либо сделать.

ВозможноВы могли бы измерить количество свопов или сравнений и экстраполировать график из этого?

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