基础算法----全排列
基础算法----全排列
春哥大魔王 发表于9个月前
基础算法----全排列
  • 发表于 9个月前
  • 阅读 6
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

实现全排列

> 今天结合面试题实现一个数组的全排列;

思路

> 试想,我们要对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

标签: 常见算法
共有 人打赏支持
粉丝 6
博文 46
码字总数 20422
×
春哥大魔王
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: