JavaScript实现穷举排列(permutation)算法谜题解答

 更新时间:2014年12月29日 09:34:24   投稿:junjie  
这篇文章主要介绍了JavaScript实现穷举排列(permutation)算法谜题解答,穷举排列是指穷举一个数组中各个元素的排列,需要的朋友可以参考下

谜题

穷举一个数组中各个元素的排列

策略

减而治之、递归

JavaScript解


复制代码 代码如下:

/**
 * Created by cshao on 12/23/14.
 */

function getPermutation(arr) {
  if (arr.length == 1) {
    return [arr];
  }

  var permutation = [];
  for (var i=0; i<arr.length; i++) {
    var firstEle = arr[i];
    var arrClone = arr.slice(0);
    arrClone.splice(i, 1);
    var childPermutation = getPermutation(arrClone);
    for (var j=0; j<childPermutation.length; j++) {
      childPermutation[j].unshift(firstEle);
    }
    permutation = permutation.concat(childPermutation);
  }
  return permutation;
}

var permutation = getPermutation(['a','b','c']);
console.dir(permutation);

结果


复制代码 代码如下:

[ [ 'a', 'b', 'c' ],
  [ 'a', 'c', 'b' ],
  [ 'b', 'a', 'c' ],
  [ 'b', 'c', 'a' ],
  [ 'c', 'a', 'b' ],
  [ 'c', 'b', 'a' ] ]

相关文章

  • JS函数多个参数默认值指定方法分析

    JS函数多个参数默认值指定方法分析

    这篇文章主要介绍了JS函数多个参数默认值指定方法,结合实例形式分析了javascript函数参数的定义与传递相关操作技巧,需要的朋友可以参考下
    2016-11-11
  • js实现浏览器打印功能的示例代码

    js实现浏览器打印功能的示例代码

    这篇文章主要介绍了js如何实现浏览器打印功能,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • uniapp时间格式化处理实现

    uniapp时间格式化处理实现

    本文主要介绍了uniapp时间格式化处理实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 小程序实现上下切换位置

    小程序实现上下切换位置

    这篇文章主要为大家详细介绍了小程序实现上下切换位置,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • 解决layui的使用以及针对select、radio等表单组件不显示的问题

    解决layui的使用以及针对select、radio等表单组件不显示的问题

    今天小编就为大家分享一篇解决layui的使用以及针对select、radio等表单组件不显示的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • JS制作可以选项卡切换的年历

    JS制作可以选项卡切换的年历

    这篇文章主要为大家分享了JS制作类似于选项卡切换的年历,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • 微信小程序使用video组件播放视频功能示例【附源码下载】

    微信小程序使用video组件播放视频功能示例【附源码下载】

    这篇文章主要介绍了微信小程序使用video组件播放视频功能,结合实例形式分析了video组件播放本地mp4小视频的具体实现技巧,并附带源码供读者下载参考,需要的朋友可以参考下
    2017-12-12
  • Js 正则表达式知识汇总

    Js 正则表达式知识汇总

    本文对javascript中正则表达式进行了总结汇总,将知识点和注意点都理了一下,并附上2个练习题,这里分享给小伙伴
    2014-12-12
  • JS保留小数点(四舍五入、四舍六入)实现思路及实例

    JS保留小数点(四舍五入、四舍六入)实现思路及实例

    保留两位小数:将浮点数四舍五入,取小数点后2位;如:2,会在2后面补上00.即2.00,感兴趣的朋友看下具体的实现思路及代码
    2013-04-04
  • uniapp导航栏组件使用步骤

    uniapp导航栏组件使用步骤

    在uni-app中,可以使用官方提供的uni-navigator组件来实现导航栏的功能,这篇文章主要介绍了uniapp导航栏组件如何使用,需要的朋友可以参考下
    2024-01-01

最新评论