Files
Nasal-Interpreter/stl/sort.nas
T
2021-04-02 22:19:29 +08:00

27 lines
606 B
Plaintext

# lib sort.nas
# valkmjolnir 2021/4/2
var sort=func(vec,left,right,cmp=func(a,b){return a<=b;})
{
if(left>=right) return nil;
var L=left;
var R=right;
var tmp=vec[L];
while(left<right)
{
while(left<right and cmp(tmp,vec[right]))
right-=1;
while(left<right and cmp(vec[left],tmp))
left+=1;
if(left!=right)
{
var t=vec[left];
vec[left]=vec[right];
vec[right]=t;
}
}
vec[L]=vec[left];
vec[left]=tmp;
sort(vec,L,left-1,cmp);
sort(vec,left+1,R,cmp);
return nil;
}