Divide
  1. int Divide(int st,int dr)
  2. {
  3.      int v=a[st];
  4.      while (st < dr)
  5.      {
  6.           while (st< dr && a[dr]>=v) dr--;
  7.           a[st]=a[dr];
  8.           while (st< dr && a[st]<=v) st++;
  9.           a[dr]=a[st];
  10.      }
  11.      a[st]=v;
  12.      return st;
  13. }
Variabile globale
n =

a=

Variabile locale
v =

st =

dr =

 Funcția Divide() întoarce poziția corectă în șirul ordonat a unui element din vector, denumit pivot.
3. Aleg pivotul (de exemplu, primul element din vector); poziția acestuia devine disponibilă.
6. Parcurg vectorul din dreapta către stânga și identific primul element strict mai mic decât pivotul.
7. Elementul mai mic determinat este plasat în stânga pe poziția disponibilă; poziția sa (aflată în partea dreaptă) devine disponbilă.
8. Parcurg acum vectorul din stânga către dreapta și identific primul element strict mai mare decât pivotal.
9. Elementul mai mare determinat este plasat în dreapta pe poziția disponibilă; poziția sa (aflată în partea stângă) devine disponbilă.
Pașii 6-9 se repetă până când am parcurs toate elementele din vector.