Приветствую!
Прошу помощи у уважаемого Хабрасообщества с решением такой задачки:
В процессе написания простенького интерпретатора математических выражений (пока что даже без скобок, банальные выражения типа
5+15*2/10+2^3) just 4 fun, как говорится, столкнулся с проблемой…
Я получаю массив операций в выражении вида позиция=>операция, который для приведенного выше примера будет таким:
array(
1 => '+',
4 => '*',
6 => '/'
9 => '+',
11 => '^',
)
Также у меня есть массив приоритетов операций вида
array(
'+' => 1,
'-' => 1,
'*' => 2,
'/' => 2,
'^' => 3,
)
Сейчас бы отсортировать операции по приоритету, да вот что-то торможу все утро, не могу придумать реализации…
В итоге нужно получить (для данного примера) следующий массив:
array(
11 => '^',
4 => '*',
6 => '/',
1 => '+',
9 => '+',
)
Буду благодарен за помощь в виде алгоритма.