Improved Permutations with the BigInteger Data Type: Listing 2

The Permutation Successor method.

public Permutation Successor()
{
  if ((left == 0) && data[left] > data[left+1)) 
       return null;
  Permutation result = new Permutation(this.n);

  for (int idx = 0; idx < result.n; ++idx)  // curr data to result
    result.data[idx] = this.data[idx];
 
  int left, right;

  left = n - 2;  // Find left value 
  while ((result.data[left] > result.data[left + 1]) && (left >= 1))
    --left;

  right = n - 1;  // find right; first value > left
  while (result.data[left] > result.data[right])
    --right;

  int tmp = result.data[left];  // swap [left] and [right]
  result.data[left] = result.data[right];
  result.data[right] = tmp;

  int i = left + 1;  // order the tail
  int j = n - 1;
  while (i < j)
  {
    tmp = result.data[i];
    result.data[i++] = result.data[j];
    result.data[j--] = tmp;
  }

  return result;
}

About the Author

Dr. James McCaffrey directs the data science and research efforts at Quaetrix, a data analytics company located near Redmond, Washington. Before joining Quaetrix, James was a senior research engineer at Microsoft. James can be reached at [email protected].

comments powered by Disqus

Featured

  • VS Code 1.130 Expands Agent Host and Review Tools

    Microsoft's latest weekly VS Code release advances shared agent sessions, multi-file change review, chat visibility and terminal navigation

  • Microsoft Agent Framework Makeover: Claws, Loops and Harnesses

    Microsoft's newly released Agent Framework Harness packages the loops, planning, memory, context management and safety controls that developers previously had to assemble around AI models themselves.

  • Visual Studio 2026 Gives Copilot Built-In Skills -- and Makes Them Prove Their Worth

    Microsoft is moving Agent Skills beyond bring-your-own instructions by shipping expert-authored workflows with the IDE, while keeping them off by default until testing shows their benefits justify the additional token use.

  • Copilot AI Billing Shock Met with Meters, Caps and Token-Saving Tools

    GitHub is layering spending limits, expanded credit allowances and increasingly granular usage reporting onto Copilot, while Microsoft is reworking Visual Studio and VS Code to expose -- and reduce -- the cost of agentic development.

Subscribe on YouTube