Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无排序的组合算法()_Javascript_Sorting_Recursion_Combinations - Fatal编程技术网

Javascript 无排序的组合算法()

Javascript 无排序的组合算法(),javascript,sorting,recursion,combinations,Javascript,Sorting,Recursion,Combinations,我需要从123开始的结果,如下所示。我想从头开始打印,不使用sort() 1 2 3 1 2 4 1.25 ..… 356 4 5 6 但是,结果如下所示 4.56 356 2.56 1.56 346 2.4.6 14.6 2 3 6 1 3 6 1 2 6 34.5 2.4.5 14.5 23.5 1 3 5 1.25 2 3 4 1 3 4 1 2 4 1 2 3 result=”“; var N=6; var M=3; var arr=新阵列(M); 组合(N,M,arr,M); 警报(结

我需要从123开始的结果,如下所示。我想从头开始打印,不使用
sort()

1 2 3
1 2 4
1.25
..…
356
4 5 6

但是,结果如下所示

4.56
356
2.56
1.56
346
2.4.6
14.6
2 3 6
1 3 6
1 2 6
34.5
2.4.5
14.5
23.5
1 3 5
1.25
2 3 4
1 3 4
1 2 4
1 2 3

result=”“;
var N=6;
var M=3;
var arr=新阵列(M);
组合(N,M,arr,M);
警报(结果);
功能组合(n、r、arr、sz){
var i=n+1;
while(i-->r){
//选择第一个元素
arr[r-1]=i;
if(r>1){//if仍然需要选择
//递归成小问题
组合(i-1、r-1、arr、sz);
}否则{
//打印出一个解决方案
var j=-1;
而(++j
除了全部反转之外,您可以从一开始迭代,直到想要的值

函数组合(n,r){
功能iter(i、temp){
如果(temp.length==r){//设置完成
result.push(临时联接(“”));//联接值
返回;
}
如果(i+r>n+1+temp.length){//提前退出
返回;
}
iter(i+1,温度concat(i));//取值
iter(i+1,temp);//不使用该值
}
var result=[];//结果集
iter(1,[]);//从1和
返回结果;//收集集的空数组
}
控制台日志(组合(6,3))

。作为控制台包装{max height:100%!important;top:0;}
您可以通过以下方式更改代码来恢复顺序:

function combi(n, r, arr, sz) {
  var i = r - 1;
  while (i++ < n) {
    // choose the first element 
    arr[r - 1] = i;
    if (r > 1) { // if still needs to choose 
      // recursive into smaller problem 
      combi(i - 1, r - 1, arr, sz);
    } else {
      // print out one solution 
      var j = -1;
      while (++j < sz) {
        result += arr[j] + " ";
      }
      result += "\n";
    }
  }
}
功能组合(n、r、arr、sz){
var i=r-1;
while(i++1){//if仍然需要选择
//递归成小问题
组合(i-1、r-1、arr、sz);
}否则{
//打印出一个解决方案
var j=-1;
而(++j
看来你的想法与你想要的正好相反,所以这可能意味着你需要改变某些东西……哇,~~谢谢你。我现在很高兴。你的源代码对我很有帮助…~!!::)哇,非常感谢:)
function combi(n, r, arr, sz) {
  var i = r - 1;
  while (i++ < n) {
    // choose the first element 
    arr[r - 1] = i;
    if (r > 1) { // if still needs to choose 
      // recursive into smaller problem 
      combi(i - 1, r - 1, arr, sz);
    } else {
      // print out one solution 
      var j = -1;
      while (++j < sz) {
        result += arr[j] + " ";
      }
      result += "\n";
    }
  }
}