Удаление элементов через splice. возможно ли оптимизировать?
вот такой образчик кода
где-то сверху функции arr=[]; где-то глубоко внутри нескольких вложенных циклов var N1 = ... сложения, умножения элементов других массивов var N2 = ... сложения, умножения элементов других массивов var elem = {polza:N1, cena:N2, id:N3}; var add = del = true; while (del){ del = false; for (var i = 0; i < arr.length; ++i){ if ((arr[i].polza >= elem.polza) && (arr[i].cena <= elem.cena)){ add=false; break; } if ((arr[i].polza <= elem.polza) && (arr[i].cena >= elem.cena)){ del = true; arr.splice(i,1); --i; continue; } } } if (add) arr.push(elem); обычными словами что делает код - он ищет подмножество элементов, обладающих лучшим соотношением качество:стоимость. То есть, если на вход "чёрного ящика" подать [{5,3}, {2,7}, {2,1}, {8,7},{6,5},{3,2},{4,5}, {4,2}, {2,1}]- то на выходе мы должны получить {5,3}, {2,1}, {8,7}, {6,5}, {4,2} последовательность входящих элементов никак не отсортирована, итоговый array создаётся в процессе работы, и при необходимости его можно делать упорядоченным по любому из нужных полей (если будет происходить какая-то оптимизация от этого; так как в итоге там 10-15 элементов остаётся, и окончательная сортировка - не проблема по времени). |
Часовой пояс GMT +3, время: 16:56. |