以前一直在用JavaScript,一直没系统学习过这门语言,连原型链都不知道,现在在补《JavaScript高级程序设计》,顺便写个快速排序练手,将标兵放到合适位置上有点复杂,但是个人理解的算法只能这样啦,毕竟没有参考过标准的写法,看过标准代码但是不理解那么简洁背后的思维。
let swap=function(arr,i,j)
{
let t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
let midset=function(arr,be,ed)
{
if(ed-be+1<2)
return arr.length;
let k=be;
let p=be+1;
let q=ed;
while(p<=q)
{
while(p<ed&&arr[p]<=arr[k])
p++;
while(q>be&&arr[q]>=arr[k])
q--;
if(q<=p)
{
swap(arr,k,q);
k=q;
}
else
{
swap(arr,k,p);
swap(arr,k,q);
k=p;
}
p=p+1;
q=q-1;
}
return k;
};
let qs=function(arr,be,ed)
{
if(ed-be+1<2)
return;
let t=midset(arr,be,ed);
qs(arr,be,t-1);
qs(arr,t+1,ed);
}
let quicksort=function(arr)
{
qs(arr,0,arr.length-1);
}
module.exports={
midset,
quicksort
}