Цитата:
|
Сообщение от AleXXXSoft
Кстати с вашей предложенной моделью хранения будет лучше, т.к. данные лежат в базе, сразу могу и достать их сортированными.
|
На всякий случай упомяну о подводном камешке. Я не зря писал о том, что нужно сначала ребро заменить на две дуги, поэтому Вам из базы нужно доставать рёбра (правильнее сказать дуги) два раза, сначана отсортированные по входящим, затем по исходящим вершинам дуг. Потом вариантов два:
1) Произвести их слияние. (как итерация в merge-sort)
2) Хранить четыре массива B1,F1,B2,F2.
Имхо, первый вариант лучше.
Цитата:
|
Сообщение от AleXXXSoft
попробовал что-то такое реализовать. Теперь все зацикливается и все
|
Имхо, где-то Вы баг допустили (с идейной точки зрения, же всё правильно вроде). Оттого исходники в студию, тогда, думаю, смогу Вам помочь. А так я не ясновидящий.
З.Ы. Как я писал с php я не встречался (этот случай не всчёт

). Оттого буду презнателен, если расскажете как называется и где найти интерпретатор для php и что-то вроде отладчика. Тогда, возможно, моя помощь будет существенней.
З.Ы.Ы
Цитата:
|
но нигде не могу найти алгоритм обновления элемента в куче... ну или удаления
|
.
Алгоритм подъёма (именно то, что Вам нужно) Вы же почти реализовали: при вставке элемента в кучу, Вы же сначала добавляете элемент в конец кучи, а потом осуществяете его подъём (в Вашем же исходнике так написано).
Алгоритм удаления: Уменьшаем ключ до минус бесконечности, осуществяем подъём и удаление минимального. Это так навскидку, но, думаю, можно что-нибудь пооптимальнее придумать (например, ставить последний элемент кучи на место удаляемого, а потом производить или подъём, или спуск.
З.З.З.Ы. В моём предыдущем посте надоело исправлять не точности. Здесь [i] воспринимается не как индекс массива, а как курсив. На всякий, случай имейте ввиду и не кидайте гнилыми помидорами

) .