PHP код:
#include <a_samp>
SelectionSort(_array[], size = sizeof _array){
for(new i = 0, value = 0, j = 0, swap = 0; i != size - 1; i++){
value = i;
for(j = i + 1; j != size; j++){
if(_array[ j ] > _array[ value ])//max to min
value = j;
}
if(value != i){
swap = _array[ i ];
_array[ i ] = _array[ value ];
_array[ value ] = swap;
}
}
}
BubbleSort(_array[], size = sizeof _array){
for(new i = 0, j = 0, swap = 0; i != size; i++) {
for( j = 0 ; j < i ; j++ ) {
if(_array[i] > _array[j]){//max to min
swap = _array[i];
_array[i] = _array[j];
_array[j] = swap;
}
}
}
}
GnomeSort(_array[], size = sizeof _array){
for( new j = 1, swap; j != size; ){
if(_array[ j - 1 ] >= _array[ j ]) ++ j;//max to min
else{
swap = _array[ j ];
_array[ j ] = _array[ j - 1 ];
_array[ j - 1 ] = swap ;
-- j;
if( j == 0)
j = 1;
}
}
}
stock CombSort(array[], array_size = sizeof(array))
{
new gap = array_size;
new swapper;
new bool: swap_status = true;
while(gap != 1 || swap_status)
{
gap = (gap*10)/13;
if(!gap)
{
gap = 1;
}
swap_status = false;
for(new i = 0; i < array_size-gap; i++)
{
if(array[i] < array[i+gap])
{
swapper = array[i];
array[i] = array[i+gap];
array[i+gap] = swapper;
swap_status = true;
}
}
}
return 1;
}
stock CombSortOpt(array[], array_size = sizeof(array))
{
static gap, swap_status, i, j, end, val1, val2, addr1;
gap = array_size;
swap_status = true;
while (gap != 1 || swap_status)
{
if((gap = (gap * 10) / 13) == 0)
gap = 1;
swap_status = false;
i = 0, j = gap - 1, end = array_size - gap;
while (i < end)
{
if(array[i] < array[++j])
{
#emit load.s.alt array
#emit load.pri i
#emit idxaddr
#emit move.alt
#emit load.i
#emit stor.pri val1
#emit stor.alt addr1
#emit load.pri gap
#emit idxaddr
#emit move.alt
#emit load.i
#emit stor.pri val2
#emit load.pri val1
#emit stor.i
#emit load.alt addr1
#emit load.pri val2
#emit stor.i
swap_status = true;
}
++i;
}
}
return 1;
}
main()
{
static src_array[10000];
static numbers[sizeof(src_array)];
static t;
for (new i = 0; i < sizeof(src_array); ++i)
src_array[i] = random(0);
//
numbers = src_array;
t = GetTickCount();
SelectionSort(numbers);
t = GetTickCount() - t;
printf("SelectionSort: %d", t);
for (new i = 0; i < sizeof(numbers) - 1; ++i)
if (numbers[i] < numbers[i + 1])
{ printf("SelectionSort: error at position %d", i); break; }
//
numbers = src_array;
t = GetTickCount();
BubbleSort(numbers);
t = GetTickCount() - t;
printf("BubbleSort: %d", t);
for (new i = 0; i < sizeof(numbers) - 1; ++i)
if (numbers[i] < numbers[i + 1])
{ printf("BubbleSort: error at position %d", i); break; }
//
numbers = src_array;
t = GetTickCount();
GnomeSort(numbers);
t = GetTickCount() - t;
printf("GnomeSort: %d", t);
for (new i = 0; i < sizeof(numbers) - 1; ++i)
if (numbers[i] < numbers[i + 1])
{ printf("GnomeSort: error at position %d", i); break; }
//
numbers = src_array;
t = GetTickCount();
CombSort(numbers);
t = GetTickCount() - t;
printf("CombSort: %d", t);
for (new i = 0; i < sizeof(numbers) - 1; ++i)
if (numbers[i] < numbers[i + 1])
{ printf("CombSort: error at position %d", i); break; }
numbers = src_array;
t = GetTickCount();
CombSortOpt(numbers);
t = GetTickCount() - t;
printf("CombSortOpt: %d", t);
for (new i = 0; i < sizeof(numbers) - 1; ++i)
if (numbers[i] < numbers[i + 1])
{ printf("CombSortOpt: error at position %d", i); break; }
}