all tasks
This commit is contained in:
parent
b83f433714
commit
68f8f3e56b
14735 changed files with 178959 additions and 0 deletions
|
|
@ -0,0 +1,24 @@
|
|||
beadsort(v)={
|
||||
my(sz=vecmax(v),M=matrix(#v,sz,i,j,v[i]>=j)); \\ Set up beads
|
||||
for(i=1,sz,M[,i]=countingSort(M[,i],0,1)~); \\ Let them fall
|
||||
vector(#v,i,value(M[i,])) \\ Convert back to numbers
|
||||
};
|
||||
|
||||
countingSort(v,mn,mx)={
|
||||
my(u=vector(#v),i=0);
|
||||
for(n=mn,mx,
|
||||
for(j=1,#v,if(v[j]==n,u[i++]=n))
|
||||
);
|
||||
u
|
||||
};
|
||||
|
||||
value(v)={
|
||||
if(#v==0 || !v[1], return(0));
|
||||
if(v[#v], return(#v));
|
||||
my(left=1, right=#v, mid);
|
||||
while (right - left > 1,
|
||||
mid=(right+left)\2;
|
||||
if(v[mid], left=mid, right=mid)
|
||||
);
|
||||
left
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue