Подсчет основных операций в алгоритме быстрой сортировки?

Я написал программу быстрой сортировки, которая работает. Мне нужно включить счетчик, который считает количество итераций. В классе мы поговорили об алгоритме и пришли к выводу, что сравнение элементов является основной операцией. Тем не менее, я не знаю, где поставить счетчик. Я не могу получить правильный вывод. Я включил свой код, спасибо!

void partition( vector<int> & S, int low, int high, int & pivotpoint )
{
vector<int> U;
int pivotitem = S.at(low);
int j = low;
int i;
for( i = low + 1; i <= high; i++)
if( S.at(i) < pivotitem)
{
j++;
swap( S[i], S[j] );
}
pivotpoint = j;
swap( S[low], S[pivotpoint] );
}

void quicksort( vector<int> & S, int low, int high, int &basic_ops )
{
int pivotpoint = low;
if( high > low)
{
partition( S, low, high, pivotpoint );
quicksort( S, low, pivotpoint -1, basic_ops );
quicksort( S, pivotpoint + 1, high, basic_ops );
}
}

1

Решение

  1. вызвать быструю сортировку как быструю сортировку (массив, 0, длина -1, указатель на счетчик)

    void quicksort( vector<int> & S, int low, int high, int &basic_ops )
    
    {
    
    int pivotpoint = low;
    if( high > low)
    {
    
    *basic_ops += high - low;
    
    partition( S, low, high, pivotpoint );
    
    quicksort( S, low, pivotpoint -1, basic_ops );
    
    quicksort( S, pivotpoint + 1, high, basic_ops );
    
    }
    
    }
    
0

Другие решения

Поместите счетчик, где меняется ось

0

По вопросам рекламы [email protected]