Javascript 堆置换算法以相反的方式完成。。。。?
我试图以相反的方式使用Heaps算法,将元素固定在数组的开头,而不是最后一个。但是我不能得到结果。虽然我理解了这个算法的理论部分,但当我试图实现它时,它是令人困惑的。我主要对if条件中的swap语句感到困惑。(请查看评论)。如果有人能说出问题出在哪里,那会很有帮助。谢谢你抽出时间Javascript 堆置换算法以相反的方式完成。。。。?,javascript,algorithm,permutation,Javascript,Algorithm,Permutation,我试图以相反的方式使用Heaps算法,将元素固定在数组的开头,而不是最后一个。但是我不能得到结果。虽然我理解了这个算法的理论部分,但当我试图实现它时,它是令人困惑的。我主要对if条件中的swap语句感到困惑。(请查看评论)。如果有人能说出问题出在哪里,那会很有帮助。谢谢你抽出时间 function permute(string){ var str = string.split(""), strbrr = []; function swap(strbrr,index1,index2) {
function permute(string){
var str = string.split(""), strbrr = [];
function swap(strbrr,index1,index2) {
var temp = strbrr[index1];
strbrr[index1] = strbrr[index2];
strbrr[index2] = temp;
}
function permuteHelper(strarr, curr, end) {
if (curr == end)
console.log(strarr);
else{
var fixed = strarr[curr];
for(i=curr; i<=end; i++) {
permuteHelper(strarr,curr+1,end);
(end+1)%2 ? swap(strarr,end,curr) : swap(strarr,i,end); //This is the most confusing part for me. What is the code here?
}
}
}
permuteHelper(str,0,str.length-1);
}
var string1 = "ABCD";
permute(string1);
函数置换(字符串){
var str=string.split(“”),strbrr=[];
功能交换(strbrr、index1、index2){
var-temp=strbrr[index1];
strbrr[index1]=strbrr[index2];
strbrr[index2]=温度;
}
函数permuteHelper(strarr、curr、end){
如果(当前==结束)
控制台日志(strarr);
否则{
固定var=strarr[curr];
对于(i=curr;i)什么是“请检查注释”意思?如果你打算详细阐述你的问题以添加上下文和示例,请在你的问题中这样做,而不是通过注释。他的意思实际上是代码中的注释部分。给定字符串ABCD,你的预期输出是什么?我的意思是你返回什么。我没有看到任何返回语句。我想做的是打印所有的perm置换,我正试图通过permuteHelper中if语句中的console.log语句来实现。请原谅我的编码技巧..我只是个新手。:)