void qsort3(l, u) if l >= u return t = x[l] i = l j = u+1 while (1) /* пропуск элементов справа и слева, чтобы не делать лишней работы */ do i++ while i <= u && x[i] < t do j-- while x[j] > t if i > j break; swap(i, j) swap(l, j) qsort3(l, j-1) qsort3(j+1, u)