文档章节

基础算法----全排列

春哥大魔王的博客
 春哥大魔王的博客
发布于 2017/02/27 11:23
字数 202
阅读 9
收藏 0

实现全排列

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

思路

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

© 著作权归作者所有

共有 人打赏支持
春哥大魔王的博客
粉丝 19
博文 161
码字总数 112449
作品 0
海淀
程序员
私信 提问
程序员必备算法——排列组合

程序员必备算法——排列组合 [TOC] 还记得排列组合吗? 在高中的时候最常接触的莫过于排列组合了,毕竟高考必考的嘛。我们先来回忆下这两个的公式是啥: 如果看到这个还有一丢丢的印象,说明...

窗边的扁豆
2017/10/07
0
0
60.Permutation Sequence-Leetcode

基础回顾 String 头文件中必须包括 string的声明初始化 遍历 string与char* 字符串连接 string与int转化(注意stringstream) 我的算法(受nextPermutation影响大,算法效率低) nextPermut...

analanxingde
01/15
0
0
【万能搜索】万能DFS之全排列(一)——普通算法

DFS相信大家都很熟悉,下面就给出一种用DFS实现的算法。 全排列 大家对于全排列是很熟悉的,比如123的全排列就有: 123 132 213 231 312 321 这六种。 现在,我们来设计一个算法,来求出所有...

qq_37656398
2017/12/03
0
0
算法复习之字符串(1)

(1)字符串循环左移 | 字符串全排列(递归,非递归)《本节内容》 (2)KMP算法| BF算法 (3 字符串的最长回文子串|BM算法| 字符串查找 串是有零个或者多个字符组成的有限序列,也叫字符串。...

多了去的YangXuLei
2017/08/09
0
0
列举全排列的递归算法的java代码实现

在很多情况下,我们需要使用程序列举出一个数组或一个字符串中所有元素的全排列,一种最简单易懂的全排列算法就是递归算法,其算法思想如下: 1、想要得到一个n个元素的全排列,只需要先拿出...

qq_32216775
2017/05/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spak—— sparkCore源码解析之RangePartitioner源码

   分区过程概览 RangePartitioner分区执行原理: 计算总体的数据抽样大小sampleSize,计算规则是:至少每个分区抽取20个数据或者最多1M的数据量。 根据sampleSize和分区数量计算每个分区的...

freeli
10分钟前
0
0
从内部自用到对外服务,配置管理的演进和设计优化实践

本文整理自阿里巴巴中间件技术专家彦林在中国开源年会上的分享,通过此文,您将了解到: 微服务给配置管理所带来的变化 配置管理演进过程中的设计思考 配置管理开源后的新探索 配置中心控制台...

阿里云官方博客
11分钟前
0
0
MySQL用户管理,常用MySQL语句、MySQL数据库备份恢复

12月6日任务 13.4 mysql用户管理 13.5 常用sql语句 13.6 mysql数据库备份恢复 13.4 mysql用户管理 grant all on *.* to 'user1' identified by 'passwd'; grant SELECT,UPDATE,INSERT on db......

zgxlinux
12分钟前
1
0
Spring异常之Druid – unregister mbean error

Spring异常之Druid – unregister mbean error 2017年04月19日 12:13:42 Dr.Zhu 阅读数:6688 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zt_fucker/arti...

linjin200
17分钟前
1
0
微信小程序webview问题

今天在改小程序的时候在使用webview的时候切换webview的地址行为,出现了诡异的情况。 默认querystring里会有多个?符号,使用的时候被微信给截取了,导致程序找不到改页面。 而且querystri...

钟元OSS
20分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部