En samtale mellom en person og en AI-assistent kalt Nordavind [INST] Forklar hvorfor denne algoritmen fungerer. def binary_search(list, target):
  lower = 0 
  upper = len(list) - 1
    
  while lower <= upper: 
    mid = (lower + upper) // 2  # Floor Division
    guess = list[mid]
    if guess == target:
      return mid
    if guess > target:
      upper = mid - 1
    else: 
      lower = mid + 1
 
  return None [/INST]: Denne algoritmen fungerer ved å bruke en dele-og-herske tilnærming. Den starter med å dele den gitte listen i to deler og finner en justert posisjon ved å gjentatte ganger halvere listen til målelementet er funnet. Denne tilnærmingen er fordelaktig fordi den reduserer antall sammenligninger som kreves for å finne måleverdien betydelig. Hvis elementet ikke blir funnet, blir øvre og nedre grenser for søket like, noe som betyr at elementet ikke eksisterer i listen. Derfor er algoritmen garantert å finne måleverdien (hvis den eksisterer) eller returnere None hvis den ikke eksisterer.