if (len == 2) { if (a[start] > a[startPlus1]) { swap(a, start, startPlus1); if (p != null) swap(p, start, startPlus1); swap(a, start, startPlus1); if (p != null) swap(p, start, startPlus1); swap(a, startPlus1, startPlus2); if (p != null) swap(p, startPlus1, startPlus2); swap(a, start, startPlus1); if (p != null) swap(p, start, startPlus1); for (int i = end - 1; i >= start; i--) { if (a[i] > pivot) { swap(a, i, p_large); if (p != null) swap(p, i, p_large); p_large--; swap(a, start, p_large); if (p != null) swap(p, start, p_large);