import java.util.Arrays;
import sk.upjs.paz.calltree.CallTree;
public class QuickSort extends TriediaciAlgoritmus {
@Override
protected void utried(int dlzkaPola) {
quickSort(0, dlzkaPola - 1);
}
private void quickSort(int odIdx, int poIdx) {
CallTree.markCall(odIdx, poIdx);
if (poIdx <= odIdx) {
return;
}
int nahodnyIndex = odIdx + (int) (Math.random() * (poIdx - odIdx + 1));
vymen(nahodnyIndex, poIdx);
// pivotizacia
int idxMensich = odIdx;
for (int i = odIdx; i <= poIdx - 1; i++) {
if (porovnaj(i, poIdx) < 0) {
vymen(i, idxMensich);
idxMensich++;
}
}
vymen(poIdx, idxMensich);
// rekurzia
quickSort(odIdx, idxMensich - 1);
quickSort(idxMensich + 1, poIdx);
}
/**
* @param args
*/
public static void main(String[] args) {
QuickSort sortovac = new QuickSort();
int[] p = { 5, 3, 9, 10, 1, 8 };
sortovac.utried(p);
System.out.println(Arrays.toString(p));
}
}