// sortowanieszybkie.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <conio.h>
#include <malloc.h>
#include <ctime>
#include <cstdlib>
void szybkiesortowanie (int* tab, int ile)
{
int pivot;
int gdziepivot;
int LICZNIK=0;
LICZNIK++;
gdziepivot = (ile) / 2 ;
// printf ("[%d] - %d",pivot, tab[pivot]);
int p=ile-1;
int l=0;
int pamietaj;
puts ("\n\n\n");
pivot = tab[gdziepivot];
while (1)
{
while ( ( tab[l] < pivot ) )
{
//printf ("tab[%d] -",l);
//printf ("%d\n",tab[l]);
l++;
}
while ( ( tab[p] > pivot ) )
{
// printf ("tab[%d] -",p);
// printf ("%d\n",tab[p]);
p--;
}
if (l < p)
{
pamietaj = tab[p];
tab[p] = tab[l];
tab[l] = pamietaj;
if (l==gdziepivot)
{
gdziepivot = p;
}
else
{
if (p==gdziepivot)
{
gdziepivot=l;
}
}
l++; //
p--; //?
}
if (l>=p)
{
break;
}
}
if ( (gdziepivot>0) && (ile!=1 ))
{
szybkiesortowanie (tab, gdziepivot);
}
if ( (gdziepivot<ile-1) && (ile!=1 ))
{
szybkiesortowanie ((int *)&tab[gdziepivot+1], ile-1-gdziepivot);
}
for (int i=0; i<ile;i++)
{
printf ("tab[%d] = %d\n",i,tab[i]);
}
puts ("\n");
//break;
LICZNIK--;
}
int _tmain(int argc, _TCHAR* argv[])
{
int ile;
int* tablica;
int LICZNIK;
srand (time(NULL));
/*
printf ("ile liczb?\n");
scanf ("%d",&ile);
*/
ile = 8;
tablica = (int*) malloc (sizeof (int) * ile);
/* for (int i=0; i<ile;i++)
{
tab[i] = rand() %100;
}
*/
tablica[0] = 5;
tablica[1] = 3;
tablica[2] = 0;
tablica[3] = 2;
tablica[4] = 4;
tablica[5] = 1;
tablica[6] = 7;
tablica[7] = 3;
for (int i=0; i<ile;i++)
{
printf ("tab[%d] = %d\n",i,tablica[i]);
}
szybkiesortowanie ( tablica, ile);
puts ("\n");
/////////////////////
_getch();
return 0;
}
Comments
0 B
|👍
/👎