zuai-logo
zuai-logo
  1. AP Computer Science Principles
FlashcardFlashcard
Study GuideStudy GuideQuestion BankQuestion BankGlossaryGlossary

What is the key requirement for using binary search?

The list must be sorted.

Flip to see [answer/question]
Flip to see [answer/question]
Revise later
SpaceTo flip
If confident

All Flashcards

What is the key requirement for using binary search?

The list must be sorted.

Why is binary search more efficient than linear search for large, sorted lists?

Binary search eliminates half of the search space with each step, resulting in logarithmic time complexity.

Explain the concept of 'divide and conquer' in relation to binary search.

Binary search uses a divide and conquer approach by repeatedly dividing the search space in half.

What is the worst-case scenario for binary search?

The target element is not in the list, requiring the algorithm to eliminate all possible elements.

What is the best-case scenario for binary search?

The target element is the middle element in the first step.

How does binary search reduce search space?

By comparing the target value to the middle element and eliminating half of the list in each step.

Why is sorting important before applying binary search?

Sorting ensures that elements are in a predictable order, allowing binary search to correctly narrow down the search space.

What is the significance of the middle element in binary search?

It serves as the pivot point for comparison, determining which half of the list to eliminate.

Explain the role of comparisons in binary search.

Comparisons determine whether the target value is greater than, less than, or equal to the middle element, guiding the search.

What is the impact of list size on the performance of binary search?

Binary search performs significantly better on larger lists compared to linear search due to its logarithmic time complexity.

What are the differences between Linear Search and Binary Search?

Linear Search: Works on unsorted lists, O(n) time complexity | Binary Search: Requires sorted lists, O(log n) time complexity.

Compare the efficiency of Linear Search and Binary Search on large datasets.

Linear Search: Less efficient, checks each element | Binary Search: More efficient, eliminates half of the data with each step.

What are the memory requirements for Linear Search vs. Binary Search?

Linear Search: Minimal, no extra memory needed | Binary Search: Minimal, no significant extra memory needed.

Compare the implementation complexity of Linear Search and Binary Search.

Linear Search: Simple to implement | Binary Search: More complex to implement due to sorting and halving.

Compare the best-case scenarios for Linear Search and Binary Search.

Linear Search: Target is the first element | Binary Search: Target is the middle element.

Compare the worst-case scenarios for Linear Search and Binary Search.

Linear Search: Target is the last element or not present | Binary Search: Target is not present.

Compare the applicability of Linear Search and Binary Search to unsorted lists.

Linear Search: Applicable to unsorted lists | Binary Search: Not applicable to unsorted lists.

Compare the impact of data size on the performance of Linear Search and Binary Search.

Linear Search: Performance degrades linearly with data size | Binary Search: Performance degrades logarithmically with data size.

Compare the ease of understanding for Linear Search and Binary Search.

Linear Search: Easier to understand | Binary Search: More complex to understand.

Compare the need for preprocessing (sorting) in Linear Search and Binary Search.

Linear Search: No preprocessing needed | Binary Search: Requires preprocessing (sorting).

What does the following code output?

python
list = [2, 5, 7, 8, 11, 12]
target = 13
low = 0
high = len(list) - 1
while low <= high:
 mid = (low + high) // 2
 if list[mid] == target:
 print("Found")
 break
 elif list[mid] < target:
 low = mid + 1
 else:
 high = mid - 1
else:
 print("Not Found")

Not Found

What does the following code output?

python
list = [2, 5, 7, 8, 11, 12]
target = 8
low = 0
high = len(list) - 1
while low <= high:
 mid = (low + high) // 2
 if list[mid] == target:
 print("Found")
 break
 elif list[mid] < target:
 low = mid + 1
 else:
 high = mid - 1
else:
 print("Not Found")

Found

Identify the error in the following code:

python
def binary_search(list, target):
 low = 0
 high = len(list) - 1
 while low < high:
 mid = (low + high) // 2
 if list[mid] == target:
 return mid
 elif list[mid] < target:
 low = mid + 1
 else:
 high = mid - 1
 return -1

The code will enter an infinite loop if the target is not found because the condition low < high will not become false, and it does not handle the case when low == high. It should be low <= high.

What does the following code output?

python
list = [1, 3, 5, 7, 9]
target = 4
low = 0
high = len(list) - 1
while low <= high:
 mid = (low + high) // 2
 if list[mid] == target:
 print("Found")
 break
 elif list[mid] < target:
 low = mid + 1
 else:
 high = mid - 1
else:
 print("Not Found")

Not Found

What does the following code output?

python
list = [1, 3, 5, 7, 9]
target = 1
low = 0
high = len(list) - 1
while low <= high:
 mid = (low + high) // 2
 if list[mid] == target:
 print("Found")
 break
 elif list[mid] < target:
 low = mid + 1
 else:
 high = mid - 1
else:
 print("Not Found")

Found

Identify the error in the following code:

python
def binary_search(list, target):
 low = 0
 high = len(list)
 while low <= high:
 mid = (low + high) // 2
 if list[mid] == target:
 return mid
 elif list[mid] < target:
 low = mid + 1
 else:
 high = mid - 1
 return -1

IndexError: list index out of range. high = len(list) should be high = len(list) - 1

What does the following code output?

python
list = [1, 2, 3, 4, 5]
target = 6
low = 0
high = len(list) - 1
while low <= high:
 mid = (low + high) // 2
 if list[mid] == target:
 print("Found")
 break
 elif list[mid] < target:
 low = mid + 1
 else:
 high = mid - 1
else:
 print("Not Found")

Not Found

What does the following code output?

python
list = [1, 2, 3, 4, 5]
target = 1
low = 0
high = len(list) - 1
while low <= high:
 mid = (low + high) // 2
 if list[mid] == target:
 print("Found")
 break
 elif list[mid] < target:
 low = mid + 1
 else:
 high = mid - 1
else:
 print("Not Found")

Found

Identify the error in the following code:

python
def binary_search(list, target):
 low = 0
 high = len(list) - 1
 while low < high:
 mid = (low + high) // 2
 if list[mid] == target:
 return mid
 elif list[mid] < target:
 low = mid + 1
 else:
 high = mid - 1
 return -1

The while loop condition low < high should be low <= high to correctly handle the case when the target is the last element.

What does the following code output?

python
list = [1, 5, 9, 13, 17]
target = 9
low = 0
high = len(list) - 1
while low <= high:
 mid = (low + high) // 2
 if list[mid] == target:
 print("Found")
 break
 elif list[mid] < target:
 low = mid + 1
 else:
 high = mid - 1
else:
 print("Not Found")

Found