Moin,
Oder anders formuliert: Ich kaufe kein Sägewerk, um ein Stück von einer Dachlatte abzuschneiden. Für kleine zu durchsuchende Listen wird deine naive Suche immer hinreichend sein. Um sie zu optimieren, muss man aber Rahmenbedingungen kennen, sonst geht die Optimierung fehl. Selbst eine Trivialität wie "Sortiere nach Beginnzeit und führe statt einer sequenziellen Suche eine binäre Suche aus" bringt nur was, wenn Du Einschränkungen für überlappende Intervalle machst. Andernfalls kann dir irgendein ewig langes Intervall aus frühen Morgenstunden böse den Abend verderben.
Diese Rahmenbedingungen sind: Ein zweckmäßiger Default und ein darauf ausgerichtes Fallback. Und der Fall, dass es Geräte geben kann für die es gar keinen Zeitplan gibt, macht den Sinn eines Defaults ja nun besonders deutlich ;)
Btw., anstelle Uhrzeiten ist es auch möglich, Funktionen wie sunrise(), sunset() oder bestimmte Event-Listener einzusetzen.
MfG