基礎算法----全排列

實現全排列

今天結合面試題實現一個數組的全排列;git

思路

試想,咱們要對123進行全排列:面試

  1. 咱們能夠採用將1固定,「23」進行全排列;
  2. 將「2」固定,對「13」進行全排列;
  3. 將「3」固定,對「12」進行全排列;
  4. 每次固定位置以後,還原置換順序到以前的狀態;

實現

string str = "1234";

#region 全排列
static void allPermutation(char[] arr, int start, int end)
{
     if (start == end)
     {
           for (int i = 0; i < arr.Length; i++)
           {
                System.Console.Write(arr[i]);
            }
            System.Console.Write("\n");
      }
      else
      {
            for (int i = start; i <= end; i++)
            {
                swap(arr, i, start);//將某一位置換到第一位固定
                allPermutation(arr, start + 1, end);
                swap(arr, i, start);//還原上面置換
            }
      }
  }

  static void swap(char[] arr, int left, int right)
  {
      char temp = arr[left];
      arr[left] = arr[right];
      arr[right] = temp;
  }
  #endregion

結果

全排列結果

源碼

http://git.oschina.net/aspnet/Suan-Fa數組

相關文章
相關標籤/搜索