Witam, czy wie ktoś może, dla czego w tym programie nie działa quick sort? Znajduję się ono pod voidem f_qs i wywoływane jest na dole w kodzie
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <ctime>
#include <cstdio>
#include <time.h>
#include <windows.h>
using namespace std;
char wybor;
clock_t start, stop;
int ile, i, a, b, c, j, x, y;
float *liczby, *bs, *qs, *posortowane, f, z, czas_bs, czas_qs;
void f_bs ()
{
for ( i = 1; i < ile; i ++ )
{
for ( j = 1; j < ile; j ++ )
{
if ( bs [ j - 1 ] > bs [ j ] )
{
f = bs [ j - 1 ];
bs [ j - 1 ] = bs [ j ];
bs [ j ] = f;
}
}
}
}
void f_qs ( int x0, int y0 )
{
z = qs [ 0 ];
x = x0;
y = y0;
do
{
while ( qs [ x ] < z )
{
x ++;
}
while ( qs [ y ] > z )
{
y --;
}
if ( x <= y )
{
f = qs [ x ];
qs [ x ] = qs [ y ];
qs [ y ] = f;
x ++;
y --;
}
}
while ( x <= y );
if ( x < y0 )
{
f_qs ( x, y0 );
}
if ( y > x0 )
{
f_qs ( x0, y );
}
}
void napis ()
{
b = 2;
system ( "cls" );
cout << "Liczby przed posortowaniem: ";
if ( ile <= 10 )
{
for ( i = 0; i < ile; i ++ )
{
cout << endl << " - " << liczby [ i ];
bs [ i ] = liczby [ i ];
qs [ i ] = liczby [ i ];
}
}
else
{
for ( i = 0; i < 10; i ++ )
{
cout << endl << " - " << liczby [ i ];
bs [ i ] = liczby [ i ];
qs [ i ] = liczby [ i ];
}
cout << endl << "... (+" << ile - 10 << ")";
for ( i = 10; i < ile; i ++ )
{
bs [ i ] = liczby [ i ];
qs [ i ] = liczby [ i ];
}
}
cout << endl << endl << "Liczby po posortowaniu: ";
}
void czas_napis_bs ()
{
cout << "Czas sortowania babelkowego: " << czas_bs << "s";
}
void czas_napis_qs ()
{
cout << "Czas szybkiego sortowania: " << czas_qs << "s";
}
void czas_napis ()
{
cout << endl << endl;
switch ( wybor )
{
case '1':
czas_napis_bs ();
break;
case '2':
czas_napis_qs ();
break;
case '3':
czas_napis_bs ();
cout << endl;
czas_napis_qs ();
break;
}
cout << endl << endl;
}
int main()
{
srand ( time ( NULL ) );
system ( "color 09" );
for ( ; ; )
{
for ( a = 1; a == 1; )
{
system ( "cls" );
cout << "Co chcesz zrobic: " << endl << endl;
cout << "[ 1 ] - Wybierz liczby do posortowania" << endl;
cout << "[ 2 ] - Wylosuj liczby do posortowania" << endl;
cout << "[ 3 ] - Wyjdz z programu" << endl;
wybor = getch ();
if ( wybor == '3' )
{
a = 2;
exit ( 0 );
}
else if ( ( wybor == '1' ) || ( wybor == '2' ) )
{
a = 2;
system ( "cls" );
cout << "Ile liczb z zakresu od 1 do 1.000.000 chcesz posortowac: ";
cin >> ile;
for ( b = 1; b == 1; )
{
if ( ile < 2 )
{
system ( "cls" );
cout << "Podaj poprawna wartosc: ";
cin >> ile;
}
else
{
b = 2;
}
}
liczby = new float [ ile ];
bs = new float [ ile ];
qs = new float [ ile ];
posortowane = new float [ ile ];
switch ( wybor )
{
case '1':
for ( i = 0; i < ile; i ++ )
{
system ( "cls" );
cout << "Podaj " << i + 1 << " z " << ile << " liczbe: ";
cin >> liczby [ i ];
if ( liczby [ i ] > 1000000 )
{
liczby [ i ] = 1000000;
}
else if ( liczby [ i ] < 1 )
{
liczby [ i ] = 1;
}
}
break;
case '2':
for ( i = 0; i < ile; i ++ )
{
liczby [ i ] = rand () % 1000000 + 1;
}
break;
}
}
}
for ( a = 1; a == 1; )
{
system ( "cls" );
cout << "Co chcesz zrobic: " << endl << endl;
cout << "[ 1 ] - Wybierz sposob sortowania " << endl;
cout << "[ 2 ] - Powrot do menu glownego" << endl;
cout << "[ 3 ] - Wyjdz z programu" << endl;
wybor = getch ();
if ( wybor == '3' )
{
a = 2;
exit ( 0 );
}
else if ( ( wybor == '1' ) || ( wybor == '2' ) )
{
a = 2;
switch ( wybor )
{
case '1':
for ( b = 1; b == 1; )
{
system ( "cls" );
cout << "Wybierz sposob sortowania: " << endl << endl;
cout << "[ 1 ] - Sortowanie babelkowe" << endl;
cout << "[ 2 ] - Szybkie sortowanie" << endl;
cout << "[ 3 ] - Porownaj oba" << endl;
wybor = getch ();
switch ( wybor )
{
case '1':
napis ();
start = clock ();
f_bs ();
stop = clock ();
czas_bs = ( float ) ( stop - start ) / CLOCKS_PER_SEC;
for ( i = 0; i < ile; i ++ )
{
posortowane [ i ] = bs [ i ];
}
break;
case '2':
napis ();
start = clock ();
f_qs ( 0, ile - 1 );
stop = clock ();
czas_qs = ( float ) ( stop - start ) / CLOCKS_PER_SEC;
for ( i = 0; i < ile; i ++ )
{
posortowane [ i ] = qs [ i ];
}
break;
case '3':
napis ();
start = clock ();
f_bs ();
stop = clock ();
czas_bs = ( float ) ( stop - start ) / CLOCKS_PER_SEC;
for ( i = 0; i < ile; i ++ )
{
posortowane [ i ] = bs [ i ];
}
start = clock ();
f_qs ( 0, ile - 1 );
stop = clock ();
czas_qs = ( float ) ( stop - start ) / CLOCKS_PER_SEC;
for ( i = 0; i < ile; i ++ )
{
posortowane [ i ] = qs [ i ];
}
break;
}
}
if ( ile <= 10 )
{
for ( i = 0; i < ile; i ++ )
{
cout << endl << " - " << posortowane [ i ];
}
czas_napis ();
}
else
{
for ( i = 0; i < 10; i ++ )
{
cout << endl << " - " << posortowane [ i ];
}
cout << endl << "... (+" << ile - 10 << ")" << endl;
czas_napis_bs ();
}
if ( ile <= 10 )
{
cout << "Co chcesz zrobic: " << endl << endl;
cout << "[ 1 ] - Powrot do menu glownego" << endl;
cout << "[ 2 ] - Wyjdz z programu" << endl;
for ( b = 1; b == 1; )
{
wybor = getch ();
switch ( wybor )
{
case '1':
b = 2;
break;
case '2':
b = 2;
exit ( 0 );
break;
}
}
}
else
{
cout << "Co chcesz zrobic: " << endl << endl;
cout << "[ 1 ] - Wyslwietl wszystko" << endl;
cout << "[ 2 ] - Powrot do menu glownego" << endl;
cout << "[ 3 ] - Wyjdz z programu" << endl;
for ( b = 1; b == 1; )
{
wybor = getch ();
switch ( wybor )
{
case '1':
system ( "cls" );
cout << "Liczby po posortowaniu: ";
for ( i = 0; i < ile; i ++ )
{
cout << endl << " - " << bs [ i ];
}
cout << endl << endl << "Czas sortowania babelkowego: " << czas_bs << "s" << endl << endl;
cout << "Co chcesz zrobic: " << endl << endl;
cout << "[ 1 ] - Powrot do menu glownego" << endl;
cout << "[ 2 ] - Wyjdz z programu" << endl;
for ( c = 1; c == 1; )
{
wybor = getch ();
switch ( wybor )
{
case '1':
c = 2;
b = 2;
break;
case '2':
b = 2;
exit ( 0 );
break;
}
}
break;
case '2':
b = 2;
break;
case '3':
b = 2;
exit ( 0 );
break;
}
}
}
break;
}
}
}
delete [] liczby;
delete [] bs;
delete [] qs;
}
return 0;
}