Показать сообщение отдельно
Старый 18.01.2009, 03:23
chugart вне форума Посмотреть профиль Отправить личное сообщение для chugart Найти все сообщения от chugart
  № 1  
Ответить с цитированием
chugart

Регистрация: Jan 2009
Сообщений: 18
По умолчанию Поиск маскимального (минимального) элемента многомерного массива

Добрый день!

У меня есть многомерный массив следующей структуры:
Код AS1/AS2:
var mainArr:Array = new Array();
 
for ( i = 0; i < N; i++  ) {
    var subVar:Array = new Array();
     subArr['m1'] = K1; // ну что то присваиваем элементу массива
     subArr['m2'] = K2; // тоже что то присваиваем элементу массива
     subArr['m3'] = K3; // тоже что то присваиваем элементу массива
     subArr['ml4'] = K4; // тоже что то присваиваем элементу массива
 
     mainArr[i] = subVar; // т.е. у каждого mainArr[i] есть mainArr[i]['m1'], mainArr[i]['m2'], mainArr[i]['m3'], mainArr[i]['m4'] 
}
Нужно найти в этом многомерном масиве максимальный элемент m2, т.е максимальный элемент из всех mainArr[i]['m2'] (i от 0 до N).

Как это можно сделать красивым способом?

Я написал в лоб вот так:
Код AS1/AS2:
var yInd:Array = getMaxMinIndexInArr( mainArr, "m2" ); trace( "yInd " + yInd ); // вывод для дебага
 
// возвращает минимальное и максимальное значение индексов из массива данных
// в нашем случае index='m2'
function getMaxMinIndexInArr( data_arr:Array, index:String ):Array {
	var arr:Array = new Array(2);
	var cur:Number = data_arr[0][index];
	arr[0] = cur;
	arr[1] = cur;
	for( var i:Number = 1; i < (data_arr.length - 1) ; i++) {
		cur = data_arr[i][index];
		trace( "cur =" + cur + " arr[0]=" + arr[0] );// организуе вывод для дебага
		if ( cur < arr[0] ) {
			arr[0] = cur; 
                                      trace(" cur < arr[0] присвоили arr[0]=" + arr[0] );// еще один вывод для дебага
		}
	}
 
	return arr;
}
Вроде бы все правильн ои тупо - если текущий элемент массива меньше чем переменная в которой мы храним имнимальное число. то в переменную которая хранит минимальное число записываем текущий элемент массива. НО вывод output выдает мне следующий екст
Код:
cur =658.63 arr[0]=644.47
cur =549.43 arr[0]=644.47
 cur < arr[0] присвоили arr[0]=549.43
cur =1285.47 arr[0]=549.43
 cur < arr[0] присвоили arr[0]=1285.47
yInd 1285.47,644.47
И получается что в какой то момент времени число 1285.47 меньше чем 549.43. В чем фокус?
ПОдскажи плз.