using System; namespace TotalSort { /**//// <summary> /// 全排列的递归算法 /// </summary> class Class1 { /**//// <summary> /// 应用程序的主入口点。 /// </summary> [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); } } } }} 本来想测试 a - z 的全排列,但估算了一下数目相当惊人,只好作罢。 (这个数目是 26!) 采用了递归仅仅是为了锻炼算法,效率肯定是很低的。