Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α17.1 · Πολυπλοκότητα της δυαδικής αναζήτησης

Διάλεξη 17: Δυαδική Αναζήτηση και Ταξινόμηση, διαφάνεια 18 · Δυσκολία ★☆☆ · short-answer · Κεφάλαια: 17

Τι πολυπλοκότητα (χρόνου και χώρου) έχει αυτός ο αλγόριθμος;

int binary_search(int elem, int *array, int n) {
  int mid, low = 0, high = n - 1;
  while (low <= high) {
    mid = low + (high - low) / 2;
    if (array[mid] == elem)
      return 1;
    else if (array[mid] < elem)
      low = mid + 1;
    else
      high = mid - 1;
  }
  return 0;
}

Υπόδειξη

Πόσα στοιχεία μένουν στο διάστημα [low, high] μετά από κάθε γύρο του βρόχου; Μετρήστε πόσες φορές μπορείτε να διαιρέσετε το \(n\) με το 2 μέχρι να φτάσετε στο 1. Για τον χώρο, μετρήστε τις μεταβλητές που χρησιμοποιεί η συνάρτηση.

Αριθμός στον οδηγό: Α17.1 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: slides-lec17-binary-search-complexity · Σύνδεσμος: https://progintro.github.io/study/questions/slides/slides-lec17-binary-search-complexity.html · Markdown (GitHub)