Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
41
Task/Quickselect-algorithm/Phix/quickselect-algorithm.phix
Normal file
41
Task/Quickselect-algorithm/Phix/quickselect-algorithm.phix
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
global function quick_select(sequence s, integer k)
|
||||
integer left = 1, right = length(s), pos
|
||||
object pivotv, tmp
|
||||
|
||||
while left<right do
|
||||
pivotv = s[k];
|
||||
-- {s[k], s[right]} = {s[right], s[k]}
|
||||
tmp = s[k]
|
||||
s[k] = s[right]
|
||||
s[right]=tmp
|
||||
pos = left
|
||||
for i=left to right do
|
||||
if s[i]<pivotv then
|
||||
-- {s[i], s[pos]} = {s[pos], s[i]}
|
||||
tmp = s[i]
|
||||
s[i] = s[pos]
|
||||
s[pos]=tmp
|
||||
pos += 1
|
||||
end if
|
||||
end for
|
||||
-- {s[right], s[pos]} = {s[pos], s[right]}
|
||||
tmp = s[right]
|
||||
s[right] = s[pos]
|
||||
s[pos]=tmp
|
||||
if pos==k then exit end if
|
||||
if pos<k then
|
||||
left = pos + 1
|
||||
else
|
||||
right = pos - 1
|
||||
end if
|
||||
end while
|
||||
return {s,s[k]}
|
||||
end function
|
||||
|
||||
sequence s = {9, 8, 7, 6, 5, 0, 1, 2, 3, 4}
|
||||
integer r
|
||||
for i=1 to 10 do
|
||||
{s,r} = quick_select(s,i)
|
||||
printf(1," %d",r)
|
||||
end for
|
||||
{} = wait_key()
|
||||
Loading…
Add table
Add a link
Reference in a new issue