Re: Sort items in a list without OSAXen
Re: Sort items in a list without OSAXen
- Subject: Re: Sort items in a list without OSAXen
- From: has <email@hidden>
- Date: Sun, 2 Sep 2001 18:41:06 +0100
Joe,
Since you only need three numbers out of UnsortedList, you don't have
bother sorting it. That saves a bit of work right away.
Here's a handler that'll return the sum of the three highest numbers in
UnsortedList:
on getsumofhighestthree(UnsortedList)
set a to 0 --the lowest possible value in UnsortedList
set b to a
set c to a
repeat with eachitem in UnsortedList
if (eachitem > a) then
set c to b
set b to a
set a to eachitem
else if (eachitem > b) then
set c to b
set b to eachitem
else if (eachitem > c) then
set c to eachitem
end if
end repeat
return a + b + c
end getsumofhighestthree
It should be pretty efficient as it only goes through the UnsortedList
once. No fancy structures either.
You'll note it does make an assumption as to the lowest possible value in
UnsortedList (this was simplest). Change this value to some hugely negative
number if you're using any negative values in UnsortedList.
If you won't always be summing three numbers, however, you may be better
off sticking with a generic sort routine. Or you could do a more flexible
version of the above (I'm dunno how fast it'd run though).
HTH.
has
p.s. Out of interest - and this is for the more knowledgeable folks than me
- what would be the most efficient sort algorithm you could do in AS? And
how would it compare for speed against using an OSAX?