Что идет не так, так это то, что цикл while
сравнивает одно и то же значение array[mid_point]
на каждой итерации, таким образом, заканчивая бесконечным циклом, если условие удовлетворяется.
Бинарный поиск является рекурсивным подходом и выполняет итерации по меньшим элементам одного и того же списка с каждой итерацией, пока не будет получен индекс требуемого элемента, если он присутствует в списке. Ваш код будет работать, если вы нарежете array
и вызовете binary_search
рекурсивно, передавая новый список в качестве аргумента. Цикл while
может быть заменен простым условием if
.
Для получения дополнительной информации, проверьте эту ссылку и сравните с вашей функцией, чтобы понять разницу. :)
Это очень интересно. Я узнал, что это - менеджер по оформлению, устанавливающий cookie. Тот может использоваться для регистрации процессов для принадлежности "сессии", которыми управляет позвонивший демон ConsoleKit
. Это должно поддерживать быстрое переключение между пользователями. Моя система KDE4.2.1, по-видимому, поддерживает его также.
Считайте эту мягкую фетровую шляпу запись Wiki.
Таким образом, эта переменная среды похожа DBUS_SESSION_BUS_ADDRESS
предоставлять доступ к некоторому объекту (в случае XDG_SESSION_COOKIE
сессия входа в систему, управляемая ConsoleKit). Например, имея в распоряжении ту переменную среды, можно попросить у менеджера текущей сессии:
$ dbus-send --print-reply --system --type=method_call \
--dest=org.freedesktop.ConsoleKit \
/org/freedesktop/ConsoleKit/Manager \
org.freedesktop.ConsoleKit.Manager.GetCurrentSession
method return sender=:1.1 -> dest=:1.34 reply_serial=2
object path "/org/freedesktop/ConsoleKit/Session1"
$
Менеджер также поддерживает запросы для сессии, которой принадлежит некоторый процесс
$ [...].Manager.GetSessionForUnixProcess uint32:4494
method return sender=:1.1 -> dest=:1.42 reply_serial=2
object path "/org/freedesktop/ConsoleKit/Session1"
Однако это не перечисляет или так или иначе содержит переменные, который связан с некоторыми cron
задание. Однако документация dbus-launch
говорит это libdbus
автоматически найдет правильный адрес шины DBUS. Например, файлы хранятся в /home/js/.dbus/session-bus
это содержит корректные текущие dbus адреса сессии.