首页 > 代码库 > n个数字的不同排列有n!个,要求将这些排列组成的数,按从小到大的顺序进行排列

n个数字的不同排列有n!个,要求将这些排列组成的数,按从小到大的顺序进行排列

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace One_two {

/*   * 2、编写一个控制台应用程序,要求完成下列功能。

 * 接收一个整数n。  

* 如果接收的值n为正数,输出1到n间的全部整数。  

* 如果接收的值为0或负值,用break或者return退出程序。

 * 转到第一步继续接收下一个整数。  

* */    

class Program    

{        

  private static string[] strLen = new string[24];        

  private static int t = 0;        

  static void Main()        

  {            

    string s = "1234";            

    char[] add = s.ToCharArray();            

    pai(ref add, 0, s.Length);            

    int[] tt = new int[24];            

    int x = 0;            

    foreach (string ttt in strLen)            

    {                

      tt[x++] =Convert.ToInt16(ttt);            

    }            

    for (int i = 0; i < 24; i++)            

    {                

      for (int j = i+1; j < 24; j++)                

      {                    

        if (tt[i] > tt[j])                    

         {                        

            int temp = tt[i];                        

            tt[i] = tt[j];                        

            tt[j] = temp;                    

         }                

      }            

    }            

    foreach (int c in tt)            

    {                

      Console.WriteLine(c);            

    }                          

    Console.ReadLine();       

   }

       

  //递归        

  private static void pai(ref char[] str, int m, int n)        

  {            

    if (m < n)            

    {                

      for (int i = 0; i <= m; i++)                

      {                    

         pai(ref str, m + 1, n);                    

         chang(ref str, m);                

      }            

    }            

    else            

    {                

      strLen[t++] = new string(str);            

    }        

  }

        //移位        

  private static void chang(ref char[] str, int m)        

  {            

    char temp = str[0];            

    for (int i = 0; i < m; i++)            

    {

                str[i] = str[i + 1];           

     }

            str[m] = temp;

      }    

}

}

n个数字的不同排列有n!个,要求将这些排列组成的数,按从小到大的顺序进行排列