#include <iostream>

using namespace std;

int dane[] = {30, 26, 24, 5, 15};
int liczbaElementow = 5;

int podzielTablice(int indeksPoczatkowy, int indeksKoncowy){
    int pivot = dane[indeksKoncowy];

    int indeksElementuMniejszegoOdPivota = indeksPoczatkowy-1;
    for(int indeksPoszukujacy = indeksPoczatkowy; indeksPoszukujacy < indeksKoncowy; indeksPoszukujacy++){
        if(dane[indeksPoszukujacy] < pivot){
            indeksElementuMniejszegoOdPivota++;

            int temp = dane[indeksElementuMniejszegoOdPivota];
            dane[indeksElementuMniejszegoOdPivota] = dane[indeksPoszukujacy];
            dane[indeksPoszukujacy] = temp;
        }
    }

    int temp = dane[indeksElementuMniejszegoOdPivota+1];
    
    dane[indeksElementuMniejszegoOdPivota+1] = dane[indeksKoncowy];
    dane[indeksKoncowy] = temp;

    return indeksElementuMniejszegoOdPivota+1;
}

void szybkieSortowanie(int indeksPoczatkowy, int indeksKoncowy)
{
    if(indeksPoczatkowy < indeksKoncowy){
        int indeksPodzialu = podzielTablice(indeksPoczatkowy, indeksKoncowy);
        szybkieSortowanie(indeksPoczatkowy, indeksPodzialu - 1);
        szybkieSortowanie(indeksPodzialu+1, indeksKoncowy);
    }
}

int main()
{
    szybkieSortowanie(0, liczbaElementow-1);
    for (int i = 0; i < liczbaElementow; i++) {
        cout << dane[i] << " ";
    }
}
