code: private void update_group(int pl, int pm) {
          int g;
  
          g = pm; /* group number. */
          V[start + I[pl]] = g; /* update group number of first position. */
          if (pl == pm) I[pl] = -1; /* one element, sorted group. */
          else do
              /* more than one element, unsorted group. */
              V[start + I[++pl]] = g; /* update group numbers. */
          while (pl < pm);
  
      }
docs: Subroutine for {@link #select_sort_split(int, int)} and
  {@link #sort_split(int, int)}. Sets group numbers for a group whose lowest position
  in {@link #I} is <code>pl</code> and highest position is <code>pm</code>.