[stamp] Re: sorting algorithms

  • From: Ryan McElroy <ryan@xxxxxxxxxxxxxxxxx>
  • To: stamp@xxxxxxxxxxxxx
  • Date: Sun, 19 Feb 2006 22:37:56 -0800

The space was a bug in the bubblesort routine. It was picking up blank lines by looking past the end of the array. It has been resolved. Reverse sorting is accomplished by reversing the dispay order on output. Its some ugly code, but it gets the job done.

~Ryan

Erik Thulin wrote:

Great. I had one question though. Why is a "space line" thrown seemingly randomly throughout the ranking display?

Thanks,
 - Erik

On 2/19/06, *Ryan McElroy* <ryan@xxxxxxxxxxxxxxxxx <mailto:ryan@xxxxxxxxxxxxxxxxx>> wrote:

    One more thing on Rankings.php; I pretty seriously overhauled the
    sorting links... now there's a function that does most of the
    tedious stuff and eliminates a bunch of redundant code. I also
    tried to clean up the headers by using abbreviations. If you don't
    like the abbreviations (with their pop-up tooltips), its fairly
    straightforward to change ti back, and much quicker now that
    there's a function to do it all.

    ~Ryan


Steven Buss wrote:

    Cool, thanks for fixing that for me.  I can't believe I missed
    the $ :p

    The reason i'm not sorting in MySQL (which, I agree is much
    faster and easier to use) is because not all of these values are
    stored in the database).

    Actually....now that I think about it I might be able to use
    MySQL sorting after all... I'll keep you all posted.

    On 2/19/06, *Ryan McElroy* < ryan@xxxxxxxxxxxxxxxxx
    <mailto:ryan@xxxxxxxxxxxxxxxxx>> wrote:

        Bubblesort is fixed. You had a missing $ before the last j in
        the compare on line 68. It doesn't seem to sort backwards yet.

        I also took the liberty of of changing $fields and $count to
        be more dynamic, from the passed-in array and value, which
        seems a lot more robust to me:

        $fields = array_keys($a);
        $count = count($a[$sortField]);

        That way, if you pass in a completely different array that is
        still in the same format, it will still work.

        ~Ryan




Ryan McElroy wrote:

        Steven,

        I am very curious as to why you are implementing a bubble
        sort in PHP for this... First off, PHP is slow. Secondly,
        bubble sort is slow. Not that we're lacking for cycles here
        (I don't think 30-50 teams bubble sorted in PHP is going to
        blow up the web server or anything), I just think I would do
        it differently.

        The way I would do it (did do it last year) is to let MySQL,
        which has optimized sorts written in C, do the sorting for
        me. At the very worst, this means creating temporary tables.
        At the very best, this allows you to exercise some SQL
        prowess to get the exact information you want with one
        select statement.

        On the other hand, I'm the one sitting here writing an email
        and you're the one doing all the real work. So I'm going to
        take a look at your sort routine and try to fix it or
        perhaps replace it with a merge sort. If this email piques
        your curiosity and you want to take a look at having MySQL
        do the dirty work, let me know and I'll show you how I
        accomplished that last year.

        ~Ryan


Steven Buss wrote:

        Arrrgh, apparently something isn't working quite right with
        my bubble sort, the rankings page might be a bit behind
        schedule unless I get it working tomorrow.  If you want to
        try to fix it, its rankings.php (function bubblesort())

-- Steven Buss
steven.buss@xxxxxxxxx <mailto:steven.buss@xxxxxxxxx>
PHP/MySQL programmer




-- Steven Buss
steven.buss@xxxxxxxxx <mailto:steven.buss@xxxxxxxxx>
PHP/MySQL programmer




--
Unless otherwise noted the content of this message is licensed under a:
Creative Commons Attribution, Share Alike License. CreativeCommons.org
Blog: http://www.freedomdown.net/blog/

Other related posts: