private int trPivot(int ISAd, int first, int last) {
        int middle;
        int t;

        t = last - first;
        middle = first + t / 2;

        if (t <= 512) {
            if (t <= 32) {
                return trMedian3(ISAd, first, middle, last - 1);
            } else {
                t >>= 2;
                return trMedian5(ISAd, first, first + t, middle, last - 1 - t, last - 1);
            }
        }
        t >>= 3;
        first = trMedian3(ISAd, first, first + t, first + (t << 1));
        middle = trMedian3(ISAd, middle - t, middle, middle + t);
        last = trMedian3(ISAd, last - 1 - (t << 1), last - 1 - t, last - 1);
        return trMedian3(ISAd, first, middle, last);
    }
private int trPivot ( int ISAd , int first , int last ) { int middle ; int t ; t = last - first ; middle = first + t / 2 ; if ( t <= 512 ) { if ( t <= 32 ) { return trMedian3 ( ISAd , first , middle , last - 1 ) ; } else { t >>= 2 ; return trMedian5 ( ISAd , first , first + t , middle , last - 1 - t , last - 1 ) ; } } t >>= 3 ; first = trMedian3 ( ISAd , first , first + t , first + ( t << 1 ) ) ; middle = trMedian3 ( ISAd , middle - t , middle , middle + t ) ; last = trMedian3 ( ISAd , last - 1 - ( t << 1 ) , last - 1 - t , last - 1 ) ; return trMedian3 ( ISAd , first , middle , last ) ; }
Returns the pivot element.