Algorytm QuickSort w C++ (Sortowanie szybki) Pokazane połówki tablicy oraz pivot

Projekt uruchamiany pod Visual Studio 2008. [code=cpp] // quicksort.cpp : Defines the entry point for the console application. // #include “stdafx.h” #include #include #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); }

Projekt uruchamiany pod Visual Studio 2008.

[code=cpp] // quicksort.cpp : Defines the entry point for the console application. //

#include “stdafx.h” #include #include #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;

}

//========================================================= [/code]