Graal Forums Sorting Data: Selection Sort
 User Name Remember Me? Password
 FAQ Members List Calendar Search Today's Posts Mark Forums Read

 Thread Tools Search this Thread Display Modes
#1
10-11-2008, 09:00 AM
 Gambet Registered User Join Date: Oct 2003 Posts: 2,712
Sorting Data: Selection Sort

A little over a year ago I released an example of how to use the Bubble Sort algorithm to sort a set of data, which can be found here.

I started my Freshman year at my University in the Fall, and for the Programming I course we're learning OOP via Java (going to be a CS Major). The sorting algorithm that we were taught was the Selection Sort method, which is more efficient than the Bubble Sort method; and considering the fact that I posted the Bubble Sort method, it only fits that I show you the Selection Sort method as well.

I programmed it in Java since it's the only thing that I could use at the moment to test the code, but the method itself is the same regardless of the language so it shouldn't be a problem to understand how to convert it to GScript for whomever might use it.

SelectionSort.java:

PHP Code:
``` /* *@author Gambet*/public class SelectionSort{  double dataSet[] = {1, 6, 4, 2, 5, 8, 20, 100, 54, 1000, 523};  public void selectionSort()  {   for (int a = 0; a < dataSet.length-1; a++)    {     for (int b = a+1; b < dataSet.length; b++)      {        if (dataSet[b] < dataSet[a])        {         double results = dataSet[b];         dataSet[b] = dataSet[a];         dataSet[a] = results;        }       }    }      }  public void showResults()  {   for(int sorted = 0; sorted < dataSet.length; sorted++)    {     System.out.println(dataSet[sorted]);    }   }}  ```

TestSelectionSort.java:

PHP Code:
``` class TestSelectionSort{ public static void main(String[] args)  {   SelectionSort s = new SelectionSort();   s.selectionSort();   s.showResults();  }}  ```

Quote:
 Originally Posted by Results 1.0 2.0 4.0 5.0 6.0 8.0 20.0 54.0 100.0 523.0 1000.0

The above code sorts from least to greatest. To convert from greatest to least, switch:

PHP Code:
``` if (dataSet[b] < dataSet[a])  ```
to

PHP Code:
``` if (dataSet[b] > dataSet[a])  ```

NOTE: I used the same set of values that I used for the Bubble Sort algorithm.

Last edited by Darlene159; 09-16-2009 at 04:06 AM..
#2
10-11-2008, 11:59 AM
 Crono :pluffy: Join Date: Feb 2002 Location: Sweden Posts: 20,000
 Had to do something like this last week or so, except I went the lame way and used Collections.sort(). Of course I messed up after it sorted it by 1 12 13 2 3 4. Should re-do it using your logic here, thanks. :]
 __________________
#3
10-11-2008, 01:31 PM
 xXziroXx Master of Puppets Join Date: May 2004 Location: Sweden Posts: 5,288
 I thought we were not allowed to post non-GScript scripts in the Code Library.
 __________________ Contact Informationemail: [email protected] "A delayed game is eventually good, but a rushed game is forever bad." - Shigeru Miyamoto
#4
10-11-2008, 03:25 PM
 Programmer Coder Join Date: Jan 2008 Location: -78.464422, 106.837328 Posts: 449
I converted it to GScript so that it can be tested by Graal developers.

PHP Code:
``` dataSet = {1, 6, 4, 2, 5, 8, 20, 100, 54, 1000, 523}; echo(dataSet); selectionSort(); echo(dataSet); function selectionSort() {     for (a = 0; a < dataSet.size() - 1; a++)     {         for (b = a + 1; b < dataSet.size(); b++)         {             if (dataSet[b] < dataSet[a])             {                 result = dataSet[b];                 dataSet[b] = dataSet[a];                 dataSet[a] = result;             }         }     } }  ```
Very nice, Gambet.

Quote:
 Originally Posted by xXziroXx I thought we were not allowed to post non-GScript scripts in the Code Library.
I did the same thing about 2 years ago when I posted the Java code for an analog clock. Skyld let it stay for the reason that the formula might help some people, and this is a similar case.
 __________________ - Iᴀɴ Zɪᴍᴍᴇʀᴍᴀɴ
#5
10-11-2008, 05:03 PM
 cbk1994 the fake one Join Date: Mar 2003 Location: San Francisco Posts: 10,718
 Very nice, I will likely end up using this somewhere.
 __________________
#6
10-11-2008, 05:48 PM
 Gambet Registered User Join Date: Oct 2003 Posts: 2,712
Quote:
 Originally Posted by xXziroXx I thought we were not allowed to post non-GScript scripts in the Code Library.

My apologizes if you can't, but I haven't played Graal in quite some time so I wouldn't have a method of testing the code since GScript is fabricated and has no standalone compiler. It's not so much that I wouldn't be able to do it in GScript myself, but I'd rather release something that I was certain was error proof rather than just writing code in some text file and assuming everything in it will compile and run.

From an educational standpoint, the importance is learning the Selection Sort algorithm so that you can apply it to any programming language.

Quote:
 Originally Posted by Programmer I converted it to GScript so that it can be tested by Graal developers.

Thank you.
#7
10-11-2008, 06:44 PM
 Understood Registered User Join Date: Jun 2006 Location: Orlando, FL Posts: 120
Quote:
 Originally Posted by cbk1994 Very nice, I will likely end up using this somewhere.
This is what I used for the trivia scores =p
#8
10-11-2008, 07:49 PM
 napo_p2p oh snaps Join Date: Sep 2003 Location: Pismo Beach, California Posts: 2,118
A good example for new scripters . I have a feeling that you'll be back for one of the O(n log n) algorithms.

Quote:
 Originally Posted by Crono Had to do something like this last week or so, except I went the lame way and used Collections.sort(). Of course I messed up after it sorted it by 1 12 13 2 3 4. Should re-do it using your logic here, thanks. :]
If you use List<Integer>, I believe that Collections.sort() will sort numerically.
 __________________ Scito hoc super omnia. Haec vita est tua una sola. Dum vita superest, utere maxime quoque puncto, momento, et hora quae habes. Tempus neminem non manet. Noli manere tempus. Carpe Diem Seize the Day.
#9
10-11-2008, 09:07 PM
 cbk1994 the fake one Join Date: Mar 2003 Location: San Francisco Posts: 10,718
Quote:
 Originally Posted by Understood This is what I used for the trivia scores =p
Looking over the code, that's actually pretty much what I did on Vesporia as well.
 __________________
#10
10-11-2008, 09:38 PM
 kingdom_90 Registered User Join Date: Aug 2008 Location: Norway Posts: 8
 Good efficient code there Good job
#11
10-11-2008, 09:52 PM
 Tolnaftate2004 penguin. Join Date: Jul 2004 Location: Berkeley, CA Posts: 534
 If you're looking for something even a bit more efficient, I would look up the quicksort algorithm.
 __________________ ◕‿‿◕ · pfa · check yer syntax! · src Killa Be: when i got that locker in 6th grade the only thing in it was a picture of a midget useing a firehose :/
#12
10-11-2008, 10:10 PM
 Gambet Registered User Join Date: Oct 2003 Posts: 2,712
Quote:
 Originally Posted by Tolnaftate2004 If you're looking for something even a bit more efficient, I would look up the quicksort algorithm.

Yeah, that would also fall under the O(n log n) that napo addressed. I believe that the algorithms course that we have over here is an upper-division course, so I suppose I'll get into the higher-level sorting methods as I progress into the major.
#13
10-11-2008, 10:34 PM
 napo_p2p oh snaps Join Date: Sep 2003 Location: Pismo Beach, California Posts: 2,118
Quote:
 Originally Posted by Gambet Yeah, that would also fall under the O(n log n) that napo addressed. I believe that the algorithms course that we have over here is an upper-division course, so I suppose I'll get into the higher-level sorting methods as I progress into the major.
You might actually get to mergesort, quicksort, and heapsort sometime this year (maybe next quarter/semester), since they are not too complicated. I remember going over those in my first year.
 __________________ Scito hoc super omnia. Haec vita est tua una sola. Dum vita superest, utere maxime quoque puncto, momento, et hora quae habes. Tempus neminem non manet. Noli manere tempus. Carpe Diem Seize the Day.
#14
10-12-2008, 01:24 AM
 Inverness Incubator Join Date: Aug 2004 Location: Houston, Texas Posts: 3,613
 If you need an algorithm then invoke the power of Wikipedia.
 __________________
#15
10-12-2008, 01:24 AM
 Gambet Registered User Join Date: Oct 2003 Posts: 2,712
Quote:
 Originally Posted by napo_p2p You might actually get to mergesort, quicksort, and heapsort sometime this year (maybe next quarter/semester), since they are not too complicated. I remember going over those in my first year.

Well I'm taking Programming II with Discrete Math next semester (Discrete Math being a corequisite), so it's possible. I've already read through all of the notes for my Programming I course so I know that the only sorting algorithm that we're supposed to be taught in this class is the Selection Sort method, so I simply have to look on ahead and hope the next course offers a wider range of options.

 Thread Tools Search this Thread Search this Thread: Advanced Search Display Modes Linear Mode

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is On HTML code is Off Forum Rules
 Forum Jump User Control Panel Private Messages Subscriptions Who's Online Search Forums Forums Home General Forums     Graal Main Forum (English)         Hello and Goodbyes         Birthday Forum         Guild Life         Job Forum             Global Scripting Team             Playerworld Administration Team             Forum moderation Team             Graal Kingdoms Team             Graal Zone Team             Wiki Administration Team         Server Maintenance         Discussions en Francais (Français)         Diskussionsforum (Deutsch)     Forum Rules and documentation     Non-Graal-related threads Graal V6 forums     Announcements     Your opinion     Questions about V6     Feature request     Bug Report Gold Servers     Graal Kingdoms         Markets         Kingdoms             Dustari             Forest             Crescent Pirates             Samurai             Zormite Republic         Graal Kingdoms Events         Information             Gods         GK Suggestions         GK Bugs     Zone         Gfx submissions         Information         Zone Suggestions.         Zone Bugs         Zone News         Zone PC PlayerWorlds     PlayerWorlds Main Forum         Playerworld Related Information     Playerworld Staff Openings     Bomy Island Main Forum         Kingdoms Main Forum         Events and Activities         Bugs and Future Improvements             New Races     Classic Main Forum         Classic News         Classic Bugs and suggestions         Hiring for Classic     Delteria Main Forum         Delteria News         Delteria Bugs and suggestions         Hiring for Delteria     Era Main Forum         Era News         Era Bugs and improvements         Hiring for Era         Era Wiki     N-Pulse Main Forum         N-Pulse News         N-Pulse Bugs and suggestions         Hiring for N-Pulse     Unholy Nation Main Forum         Unholy Nation News         Unholy Nation Bugs and improvements         Hiring for Unholy Nation     Valikorlia Main Forum         Valikorlia News         Valikorlia Bugs and suggestions         Hiring for Valikorlia     Zodiac Main Forum         Zodiac News         Zodiac Bugs and suggestions         Hiring for Zodiac Development Forums     Level Design     Graphic Design     Sounds & Music     Gani Construction     Videos     NPC Scripting         New Scripting Engine (GS2)         Old Scripting Engine (GS1)         Code Gallery     Tech Support         Bug Reports (No posting)     Future Improvements Private forums

All times are GMT +2. The time now is 06:24 AM.

 -- Graal Forums - Author on top -- Mobile -- Graal Forums - Old Layout Contact Us - Graal - Archive - Privacy Statement - Top