CERMINEK: to už není moc otázka v C#, ale QS funguje cca následujícím způsobem:
- pokud je QS zavolán na pole o velikosti jedna, tak nedělá nic, vrací nezměněné pole (je již seřazené)
- když je QS zavolán na delší pole, tak nejdříve zvolí nějakým způsobem pivot (třeba první prvek v poli) a rozdělíš pole na dvě pole - prvky které jsou <= než pivot a prvky > pivot... a pak zavoláš rekurzivně QS na první a na druhé pole... první i druhé pole se ti vrátí seřazené, když je dáš za sebe, tak máš seřazené celé původní pole a to vrátíš
No a tohle byl teoretický popis, prakticky se to dělá tak, že se nevytváří žádný další pole, ale dělá se to v oblasti toho pole. Ten index odkud a kam ti určuje, s jakým polem pracuješ (to kolem jakoby neexistovalo). A ty uděláš to, že v rámci této oblasti vybereš pivot a přeuspořádáš prvky této části tak, aby jsi na začátku měl opět prvky <= pivot a pak zavoláš QS na tuto oblast a QS na zbylou oblast.
Takže první zavolání QS musí být od začátku až do konce pole, aby to fungovalo :))