- This wiki is out of date, use the continuation of this wiki instead
Sort
From FenixWiki
(Difference between revisions)
Revision as of 00:11, 12 July 2007 (edit) Sandman (Talk | contribs) ← Previous diff |
Current revision (09:50, 17 July 2007) (edit) (undo) Sandman (Talk | contribs) |
||
(One intermediate revision not shown.) | |||
Line 3: | Line 3: | ||
==Definition== | ==Definition== | ||
- | ''' | + | '''INT''' sort ( <'''VARSPACE''' array> , [<'''INT''' datacount>] ) |
- | Sorts an array. | + | Sorts an [[array]] by sorting a certain number of elements, by using the first variable in each element. By default the whole array is sorted. |
+ | |||
+ | If the elements contain multiple variables, [[ksort]]() can be used to select the variable to be used for sorting. For more advanced sorting, look at [[quicksort]](). | ||
== Parameters == | == Parameters == | ||
Line 15: | Line 17: | ||
== Returns == | == Returns == | ||
- | '''INT''': [[true]] | + | '''INT''': Successrate |
+ | {| | ||
+ | | [[true]] || - Sorting succeeded. | ||
+ | |- | ||
+ | | [[false]] || - Sorting failed. Look in the [[Fenix console]] for the error. | ||
+ | |} | ||
== Example == | == Example == | ||
<pre> | <pre> | ||
Program sorting; | Program sorting; | ||
+ | |||
+ | Type _player | ||
+ | String name; | ||
+ | int score; | ||
+ | End | ||
+ | |||
Const | Const | ||
- | | + | maxplayers = 5; |
Global | Global | ||
- | | + | _player player[maxplayers-1]; |
Begin | Begin | ||
- | // Insert | + | // Insert some values |
- | for(x=0; x< | + | player[0].name = "That one bad looking dude"; |
- | | + | player[1].name = "Ah pretty lame guy"; |
+ | player[2].name = "Some cool dude"; | ||
+ | player[3].name = "OMG ZOMG guy"; | ||
+ | player[4].name = "This person is ok"; | ||
+ | |||
+ | player[0].score = 70; | ||
+ | player[1].score = 30; | ||
+ | player[2].score = 80; | ||
+ | player[3].score = 90; | ||
+ | player[4].score = 50; | ||
+ | |||
+ | |||
+ | // Show array | ||
+ | say("-------------------- unsorted"); | ||
+ | for(x=0; x<maxplayers; x++) | ||
+ | say(player[x].name + " - " + player[x].score); | ||
end | end | ||
+ | |||
+ | /* Sort by name ( quicksort() can't be used to sort Strings, | ||
+ | as a String in Fenix is a pointer to the actual String, | ||
+ | so it would sort the pointer addresses */ | ||
+ | |||
+ | // sort() | ||
+ | sort(player); // sorts by name because name is the first variable in each element | ||
+ | |||
+ | // Show array | ||
+ | say("-------------------- name - sort()"); | ||
+ | for(x=0; x<maxplayers; x++) | ||
+ | say(player[x].name + " - " + player[x].score); | ||
+ | end | ||
+ | |||
+ | // ksort() | ||
+ | ksort(player,player[0].name,maxplayers); | ||
+ | |||
+ | // Show array | ||
+ | say("-------------------- name - ksort()"); | ||
+ | for(x=0; x<maxplayers; x++) | ||
+ | say(player[x].name + " - " + player[x].score); | ||
+ | end | ||
+ | |||
+ | /* Sort by score (sort() cannot be used here, because score is not the first variable) */ | ||
+ | |||
+ | // ksort() | ||
+ | ksort(player,player[0].score,maxplayers); | ||
// Show array | // Show array | ||
- | say("--------------------"); | + | say("-------------------- score - ksort()"); |
- | for(x=0; x< | + | for(x=0; x<maxplayers; x++) |
- | say(x + " - " + | + | say(player[x].name + " - " + player[x].score); |
end | end | ||
- | // | + | // quicksort() |
- | | + | quicksort(&player[0],sizeof(_player),maxplayers,sizeof(String),sizeof(int),0); |
// Show array | // Show array | ||
- | say("--------------------"); | + | say("-------------------- score - quicksort()"); |
- | for(x=0; x< | + | for(x=0; x<maxplayers; x++) |
- | say(x + " - " + | + | say(player[x].name + " - " + player[x].score); |
end | end | ||
Line 53: | Line 108: | ||
End | End | ||
</pre> | </pre> | ||
- | Used in example: [[say]](), [[array]], [[pointer]] | + | Used in example: [[say]](), [[sort]](), [[ksort]](), [[quicksort]](), [[type]], [[array]], [[pointer]] |
Current revision
Contents |
[edit] Definition
INT sort ( <VARSPACE array> , [<INT datacount>] )
Sorts an array by sorting a certain number of elements, by using the first variable in each element. By default the whole array is sorted.
If the elements contain multiple variables, ksort() can be used to select the variable to be used for sorting. For more advanced sorting, look at quicksort().
[edit] Parameters
VARSPACE array | - The array to be sorted. |
[INT datacount] | - Number of elements to sort. |
[edit] Returns
INT: Successrate
true | - Sorting succeeded. |
false | - Sorting failed. Look in the Fenix console for the error. |
[edit] Example
Program sorting; Type _player String name; int score; End Const maxplayers = 5; Global _player player[maxplayers-1]; Begin // Insert some values player[0].name = "That one bad looking dude"; player[1].name = "Ah pretty lame guy"; player[2].name = "Some cool dude"; player[3].name = "OMG ZOMG guy"; player[4].name = "This person is ok"; player[0].score = 70; player[1].score = 30; player[2].score = 80; player[3].score = 90; player[4].score = 50; // Show array say("-------------------- unsorted"); for(x=0; x<maxplayers; x++) say(player[x].name + " - " + player[x].score); end /* Sort by name ( quicksort() can't be used to sort Strings, as a String in Fenix is a pointer to the actual String, so it would sort the pointer addresses */ // sort() sort(player); // sorts by name because name is the first variable in each element // Show array say("-------------------- name - sort()"); for(x=0; x<maxplayers; x++) say(player[x].name + " - " + player[x].score); end // ksort() ksort(player,player[0].name,maxplayers); // Show array say("-------------------- name - ksort()"); for(x=0; x<maxplayers; x++) say(player[x].name + " - " + player[x].score); end /* Sort by score (sort() cannot be used here, because score is not the first variable) */ // ksort() ksort(player,player[0].score,maxplayers); // Show array say("-------------------- score - ksort()"); for(x=0; x<maxplayers; x++) say(player[x].name + " - " + player[x].score); end // quicksort() quicksort(&player[0],sizeof(_player),maxplayers,sizeof(String),sizeof(int),0); // Show array say("-------------------- score - quicksort()"); for(x=0; x<maxplayers; x++) say(player[x].name + " - " + player[x].score); end // Wait until ESC is pressed Repeat frame; Until(key(_esc)) End
Used in example: say(), sort(), ksort(), quicksort(), type, array, pointer