
Untitled
By: a guest on
May 7th, 2012 | syntax:
None | size: 1.62 KB | hits: 25 | expires: Never
#include<iostream>
#include <windows.h>
#include<ctime>
using namespace std;
int licznik_porownan=0;
int licznik_zamian=0;
int partition(int tab[], int l, int r)
{
int q=tab[l];
int i=l-1;
int j=r+1;
do
{
do
{
i++;
licznik_porownan=licznik_porownan+1;
}while(tab[i]<q);
do
{
j--;
licznik_porownan=licznik_porownan+1;
}while(tab[j]>q);
if(i<j)
{
int pom=tab[j];
tab[j]=tab[i];
tab[i]=pom;
licznik_zamian=licznik_zamian+1;
}
licznik_porownan=licznik_porownan+1;
}while(i<j);
return j;
}
void quicksort(int tab[], int l, int r)
{
if(l<r)
{
int x=partition(tab, l, r);
quicksort(tab, l, x);
quicksort(tab, x+1, r);
}
licznik_porownan=licznik_porownan+1;
}
int main()
{
LARGE_INTEGER frequency;
LARGE_INTEGER t1, t2;
double elapsedTime;
QueryPerformanceFrequency(&frequency);
int k=0;
int m=0;
const int n=10000;
int tab[n];
cout<<"przed"<<endl;
for (int i=0; i<n; i++)
{
tab[i]=i;
cout<<tab[i];
}
for(int i=0; i<n/2; i++)
{
int pom=tab[n-i-1];
tab[n-i-1]=tab[i];
tab[i]=pom;
}
cout<<endl;
QueryPerformanceCounter(&t1);
partition(tab, 0, n-1);
quicksort(tab, 0, n-1);
QueryPerformanceCounter(&t2);
cout<<"po sorcie"<<endl;
for(int i=0; i<n; i++)
{
cout<<tab[i]<<" ";
}
cout<<endl<<endl;
cout<<licznik_porownan<< " porownan\n";
cout<<licznik_zamian<< " zamian\n";
elapsedTime = (t2.QuadPart - t1.QuadPart) * 1000.0 / frequency.QuadPart;
cout <<"czas: "<< elapsedTime << " ms.\n\n";
system("PAUSE");
return 0;
}