Projekt uruchamiany pod Visual Studio 2008.



// quicksort.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <string>
#include <time.h>

using namespace std;
const int n=10;
int tab[n];

//=========================================================

void wyswietl(int t[], int p, int k) {
cout.width(6);
for(int i=p; i<=k;i++)
printf("%3d",t[i]);
cout<<endl;
}

void sort_szybkie(int t[], int p, int k)
{
int i, j, wtemp, pivot;
i = p;
j = k;
pivot = t[p]; //definicja punkut podzialu
cout<<"pivot = "<<pivot<<"n";
while(i < j) // moga sie minąć ale mogą też być równe (zamiana skrajnych)
{
while(t[i]<pivot) i++;
while(t[j]>pivot) j--;
if(i <= j)
{
cout<<"zamiana: "<<t[i]<<" z "<<t[j]<<endl;
wtemp = t[i];
t[i] = t[j];
t[j] = wtemp;
i++;
j--;
}
}
if(i < k) {
cout<<"sort prawej polowy dla: ";
wyswietl(tab,i,k);
cout<<"n";
sort_szybkie(tab, i, k); // od i tam gdzie sie zatrzymalo na i, az do k koniec tablicy
}
if(p < j) {
cout<<"sort lewej polowy dla: ";
wyswietl(tab,p,j);
cout<<"n";
sort_szybkie(tab, p, j);
}

}

void sort_wstaw(int t[], int r)
{

}

//=========================================================
//=========================================================

int _tmain(int argc, _TCHAR* argv[])
{

srand(time(NULL));
for(int i=0; i<n; i++)
{
tab[i] = rand()%100;
}
cout<<"||| tablica przed sortowaniem:n";
wyswietl(tab, 0, n-1);
cout<<"nsortowanie...n";
sort_szybkie(tab,0,n-1);
cout<<"n||| tablica po sortowaniu:n";
wyswietl(tab,0,n-1);

cout<<"nn";
system("pause");
return 0;
}

//=========================================================