Kojo K.

asked • 06/22/20

Using the quicksort implementation, determine the running time of quicksort for random input, sorted input and reverse-order input.

This is the implementation.


template <typename Comparable>

void SORT( vector<Comparable> & items )

{

if( items.size( ) > 1 )

{

vector<Comparable> smaller;

vector<Comparable> same;

vector<Comparable> larger;


auto chosenItem = items[ items.size( ) / 2 ];


for( auto & i : items )

{

if( i < chosenItem )

smaller.push_back( std::move( i ) );

else if( chosenItem < i )

larger.push_back( std::move( i ) );

else

same.push_back( std::move( i ) );

}


SORT( smaller ); // Recursive call!

SORT( larger ); // Recursive call!


std::move( begin( smaller ), end( smaller ), begin( items ) );

std::move( begin( same ), end( same ), begin( items ) + smaller.size( ) );

std::move( begin( larger ), end( larger ), end( items ) - larger.size( ) );

}

}

1 Expert Answer

By:

Patrick B. answered • 06/23/20

Tutor
4.7 (31)

Math and computer tutor/teacher

Kojo K.

Is it O(N*logN) even when the input is a random input? I was thinking it will be a worst case but I am not sure.
Report

06/23/20

Still looking for help? Get the right answer, fast.

Ask a question for free

Get a free answer to a quick problem.
Most questions answered within 4 hours.

OR

Find an Online Tutor Now

Choose an expert and meet online. No packages or subscriptions, pay only for the time you need.