| 
 Ранговая корреляция · Функция ранжирования 
function rank(array) {
	var i, j, count, index, pos, posSum, val, sorted = array.slice(0).sort(function (a, b) {
		return a - b;
	});
	for (i = 0; i < array.length; i++) {
		val = array[i];
		if (typeof val != "number") {
			continue;
		}
		array[i] = null;
		if (array.indexOf(val) == -1) {
			array[i] = {value: sorted.indexOf(val) + 1};
		} else {
			array[i] = val;
			pos = sorted.indexOf(val);
			posSum = 0;
			count = 0;
			index = [];
			for (j = 0; j < array.length; j++) {
				if (array[j] === val) {
					++count;
					++pos;
					posSum += pos;
					array[j] = null;
					index.push(j);
				}
			}
			val = posSum / count;
			for (j = 0; j < index.length; j++) {
				array[index[j]] = {value: val};
			}
		}
		
	}
	for (i = 0; i < array.length; i++) {
		array[i] = array[i].value;
		
	}
	return array;
}
alert(rank([1, 3, 52, 6, 100, 64, 71, 100, 100, 100]).join(", "));
Цитата: 
 Простого алгоритма не нагуглил, пришлось делать самому. Может кому еще пригодится) rank correlation | 
| Часовой пояс GMT +3, время: 11:23. |