All Flashcards
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
What is Binary Search?
A search algorithm that repeatedly divides a sorted list in half to find a target value.
What is Linear Search?
A search algorithm that checks each item in a list sequentially until the target value is found.
What is Time Complexity?
A measure of the amount of time taken by an algorithm to run as a function of the input size.
What is O(n) Time Complexity?
Linear time complexity, where the time taken increases linearly with the input size.
What is O(log n) Time Complexity?
Logarithmic time complexity, where the time taken increases logarithmically with the input size.
What does 'sorted list' mean?
A list where elements are arranged in a specific order (ascending or descending).
Define 'search space'.
The portion of the data structure that is being examined by a search algorithm.
What is an algorithm?
A step-by-step procedure for solving a problem.
What is a Data Structure?
A way of organizing and storing data.
What is the 'middle element' in binary search?
The element located at the midpoint of the current search space.