Answer:
let inputArray=[2,5,8,1,100,3,0,11,26,1,133,6];
let A=inputArray;
let B=Array(A.length);
let S=A;
let T=A;
let l=A.length;
topmost:for(let s=1;;)
{
if(Math.log2(s)%2==0)
{
console.log("even");
S=A;
T=B;
}
else
{
console.log("odd");
S=B;
T=A;
}
console.log("souce="+S);
console.log("target="+T);
//break;
for(let i=0;i<l;)
{
console.log(`i==${i} and s==${s}`);
let p1=i;
let p2=i+s;
let k=0;
console.log(`p1=${p1} p2=${p2}`);
for(let k=0;;)
{
console.log(`k=${k}, p1=${p1} p2=${p2}`);
if(p2 <l && (p2 < i+2*s) && (S[p1]>S[p2] || p1==i+s))
{
T[i+k]=S[p2];
p2=p2+1;
}
else
{
T[i+k]=S[p1];
p1=p1+1;
}
k++;
if(i+k>=l || k>=2*s)
{
break;
}
}
i=i+2*s;
console.log("Target="+T);
//break topmost;
}
s=s*2;
if(s>=l)
{
break;
}
}
A=T;
console.log(A);