Wenn du Lite-C benutzt: jein var array[5][5] wäre richtig, afaik.
In C-Script gibts 2d-arrays nicht, man kann sie aber simulieren indem man ein array mit doppelter größe verwendet.
Bei 5 werten z.b.
var array[10]

Dann könntest du die plätze 0 <= i < 5 für die eig. werte nehmen und die
plätze 5 <= k < 10 für den jeweiligen sekundär wert.

Falls du c-script benutzt (dateiendung ist .wdl!) könntest du dein script auch auf ein array umstellen (1d array) und den bubble sort algorithmus verwenden den ich grad aus langerweile raus geschrieben habe.
Er funktioniert mit meinen test werten, kann aber u.U. noch verschönert werden.
Jedoch stimme ich HeelX zu, dass du soetwas mit ein bisschen nachforschen auch selber lösen könntest.

Dein script hätte dann die form:
Code:
function bubble_sort(&_array); // bubble sort prototype

var name[5];

function name_assignValues()
{
  name[0] = int(random(50));
  name[1] = int(random(50));
  name[2] = int(random(50));
  name[3] = int(random(50));
  name[4] = int(random(50));

  bubble_sort(name);
}


// Bubble sort function:
function bubble_sort(&_array)
{
	var i;
	var k;
	var buffer;
	
	i = 0;
	k = 0;
	buffer = 0;
	
	while(k < 5)
	{
		if(_array[i] > _array[i+1])
		{
			buffer = _array[i];
			_array[i] = _array[i+1];
			_array[i+1] = buffer;
		}
		else
		{
			k += 1;
		}
	
                i = cycle(i + 1, 0, 3);
		
		if(i == 0 && k < 4)
		{
			k = 0;
		}
	}
	
	//error("Bubble Sort fertig");
}


edit: Dieser bubble sort algorithmus funktioniert allerdings nur mit arrays die 5 elemente haben.

edit #2:
Habe den algorithmus bzw. die funktion überarbeitet, man übergibt nun den array und die anzahl der darin befindlichen elemente:
Code:
function bubble_sort(&_array, _nroFields)
{
	var i = 0; // element index
	var k = 0; // sort counter
	var buffer = 0; // buffer var for sorting
	
	while(k < _nroFields)
	{	
		// is the value of a lower element higher than the value of a higher element?
		if(_array[i] > _array[i+1])
		{
			buffer = _array[i]; // safe higher value in buffer
			_array[i] = _array[i+1]; // copy lower value in lower element
			_array[i+1] = buffer; // copy buffer into higher element
		}
		else // order of elements is correct
		{
			// add one to sort counter
			k += 1;
		}
		
		i += 1;
		if(i > (_nroFields-2)) { i = 0; }
		
		// new sort cycle and sorting not finished?
		if(i == 0 && k < (_nroFields-1))
		{
			// reset sort counter
			k = 0;
		}
	}
}


Last edited by Xarthor; 05/18/08 12:56. Reason: new algorithm