Наконец то отрыл код сортировки пирамидальной. Теперь вопрос по коду.

php

function heapsort($arr) {
# PHP implementation of the heapsort algo.
# Better than bubblesort, but still not "the best".
$t = null;
$r = count($arr)-1;
$l = (int)($r/2)+1;
while($l > 0) {
--$l;
self::sift($arr, $l, $r);
}
while($r > 0) {
$t = $arr[0];
$arr[0] = $arr[$r];
$arr[$r] = $t;
--$r;
self::sift($arr, $l, $r);
}
return $arr;
}
}
?>
self::sift($arr, $l, $r); - что может значить эта строка, если sift - функция?



Примечание:
Такс. С классами дела не имел и впринципе углубляться сейчас незачем.
Класс действительно там был. Как преобразовать данную строчку без класса?
Что изменится, если я убрал класс?

Примечание:
Хм, так понял просто убрать "self::"? Класса нет, значит обращаться нужно к обычной функции.
Я правильно понял, что это так сказать указатель на то, чтобы пользовалась именно та функция, которая находится в определенном классе?

Примечание:
Функция sift есть. Не думаю, что есть смысл ее сюда приносить, там обычные действия происходят.

Примечание:
В общем класс я убрал, в классе было 3 функции. Одну убрал, там ненужная сортировка пузырьком была.
Две функции оставил, класс убрал, как написал выше. Итого есть две функции и в одной идет обращение к другой. В приципе можно все переписать в одну функцию. В таком случае, если я заменю self::sift($arr, $l, $r); на sift($arr, $l, $r);, будет все работать? Вторая функция зовется sift
Думаю уже очевиден ответ. Просто удостовериться
Ответы:
Читаем мануал по ссылке.
Ключевое слово self используется для доступа к методам класса из него самого.
соотв. self::sift -- вызов определенной в этом же классе функции из другой ф-ии этого класса.
вы привели часть кода класса, при этом пропустив его начало
sift это некий статичный метод этого класса.
если функция не будет определена, то что она по вашему сделает?
если функция внутри класса, то то простой вызов не сработает, ее нужно либо написать отдельно от класса, либо обращаться через класс ClassName::sift, где ClassName - имя класса в котором она находится
ну будем надеяться


16 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.