软考程序员算法实例:全排列的递归算法

来源:微学教育网发布时间:2012-03-27

  using System;

  namespace TotalSort

  {

  /**////

  /// 全排列的递归算法

  ///

  class Class1

  {

  /**////

  /// 应用程序的主入口点。

  ///

  [STAThread]

  static void Main(string[] args)

  {

  //char[] s = "abcdefghijklmnopqrstuvwxyz".ToCharArray();

  char[] s = "abcde".ToCharArray();

  TotalSort(s, 0);

  Console.WriteLine("\n\n总数:{0}", resultCount);

  Console.ReadLine();

  }

  static int resultCount = 0;

  public static void TotalSort(char[] list, int start) {

  int end = list.Length - 1;

  if (start == end) {

  resultCount++;

  Console.WriteLine(list);

  }

  else {

  for (int i = start; i <= end; i++) {

  char[] temp = new char[list.Length];

  list.CopyTo(temp, 0);

  char tempc = temp[start];

  temp[start] = temp[i];

  temp[i] = tempc;

  TotalSort(temp, start + 1);

  }

  }

  }

  }

  }