41 lines
980 B
Plaintext
41 lines
980 B
Plaintext
/**
|
|
<doc><h2>Sort integer array, in Neko</h2>
|
|
<p>Array sort function modified from Haxe codegen with -D neko-source</p>
|
|
<p>The Neko target emits support code for Haxe basics, sort is included</p>
|
|
<p>Tectonics:<br />prompt$ nekoc sort.neko<br />prompt$ neko sort</p>
|
|
</doc>
|
|
**/
|
|
|
|
var sort = function(a) {
|
|
var i = 0;
|
|
var len = $asize(a);
|
|
while ( i < len ) {
|
|
var swap = false;
|
|
var j = 0;
|
|
var max = (len - i) - 1;
|
|
while ( j < max ) {
|
|
if ( (a[j] - a[j + 1]) > 0 ) {
|
|
var tmp = a[j + 1];
|
|
a[j + 1] = a[j];
|
|
a[j] = tmp;
|
|
swap = true;
|
|
}
|
|
j += 1;
|
|
}
|
|
if ( $not(swap) )
|
|
break;;
|
|
i += 1;
|
|
}
|
|
return a;
|
|
}
|
|
|
|
var arr = $array(5,3,2,1,4)
|
|
$print(arr, "\n")
|
|
|
|
/* Sorts in place */
|
|
sort(arr)
|
|
$print(arr, "\n")
|
|
|
|
/* Also returns the sorted array for chaining */
|
|
$print(sort($array(3,1,4,1,5,9,2,6,5,3,5,8)), "\n")
|