From octave-maintainers-request at bevo dot che dot wisc dot edu Thu Jan 22 15:44:55 2004 Subject: Re: benchmarks - sort From: David Bateman To: Paul Thomas Cc: octave-maintainers at bevo dot che dot wisc dot edu, octave-dev@lists.sourceforge.net Date: Thu, 22 Jan 2004 22:41:09 +0100 --WYTEVAkct0FjGQmd Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit Daprès Paul Thomas (le 22/01/2004): > In conclusion, I will use your sort algorithm but found mine to be an > interesting exercise. Except that the version I previously sent, I introduced a bug when fixing a seg-fault. The result was that it didn't always do the last merge. The fix unfortunately slows things up a bit, though at worst case "b=sort(a)" is only 1.5 times as long as matlab, and still much better for partially ordered lists.... I attach the patch, in case you want to test it, but will try and commit the code... Cheers David -- David Bateman David dot Bateman at motorola dot com Motorola CRM +33 1 69 35 48 04 (Ph) Parc Les Algorithmes, Commune de St Aubin +33 1 69 35 77 01 (Fax) 91193 Gif-Sur-Yvette FRANCE The information contained in this communication has been classified as: [x] General Business Information [ ] Motorola Internal Use Only [ ] Motorola Confidential Proprietary --WYTEVAkct0FjGQmd Content-Type: application/octet-stream Content-Disposition: attachment; filename="patch.gz" Content-Transfer-Encoding: base64 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 AA== --WYTEVAkct0FjGQmd--