public static int onceSort(int r[], int head, int tail) {
        int left = head, right = tail, tmp;

        while (left < right) {
            // 右侧扫描
            while (left<right && r[left]<=r[right]) {
                right--;
            }
            if (left < right) {
                swap(r, left, right); // 将较小记录交换到前面
                left++;
            }

            // 左侧扫描
            while (left<right && r[left]<= r[right]) {
                left++;
            }
            if (left < right) {
                swap(r, left, right); // 将较大记录交换到后面
                right--;
            }
        }
        return left; // i为轴值记录的最终位置
    }