All Flashcards
What does the following code output?
java
ArrayList<Integer> arr = new ArrayList<>(Arrays.asList(5, 2, 8, 1, 9));
Collections.sort(arr);
System.out.println(arr);
[1, 2, 5, 8, 9]
Identify the error in the following code:
java
public static int recursiveBinarySearch(ArrayList<Integer> array, int n, int left, int right) {
int middle = (left + right) / 2;
if (left > right) { return -1; }
else if (n == array.get(middle)) { return middle; }
else if (n < array.get(middle)) { recursiveBinarySearch(array, n, left, middle - 1); }
else if (n > array.get(middle)) { recursiveBinarySearch(array, n, middle + 1, right); }
}
The recursive calls don't return a value. Should be return recursiveBinarySearch(...).
What does the following code output?
java
ArrayList<Integer> arr = new ArrayList<>(Arrays.asList(5, 2, 8, 1, 9));
recursiveInsertionSort(arr, 0);
System.out.println(arr);
Assuming recursiveInsertionSort is correctly implemented.
[1, 2, 5, 8, 9]
What does the following code output?
java
ArrayList<Integer> arr = new ArrayList<>(Arrays.asList(5, 2, 8, 1, 9));
recursiveSelectionSort(arr, 0);
System.out.println(arr);
Assuming recursiveSelectionSort is correctly implemented.
[1, 2, 5, 8, 9]
What does the following code output?
java
ArrayList<Integer> arr = new ArrayList<>(Arrays.asList(5, 2, 8, 1, 9));
mergeSort(arr);
System.out.println(arr);
Assuming mergeSort is correctly implemented.
[1, 2, 5, 8, 9]
What does the following code output?
java
ArrayList<Integer> arr = new ArrayList<>(Arrays.asList(5, 2, 8, 1, 9));
int index = recursiveLinearSearch(arr, 8, 0);
System.out.println(index);
2
What does the following code output?
java
ArrayList<Integer> arr = new ArrayList<>(Arrays.asList(1, 2, 5, 8, 9));
int index = recursiveBinarySearch(arr, 5, 0, arr.size() - 1);
System.out.println(index);
2
Identify the error in the following code:
java
public static int recursiveLinearSearch(ArrayList<Integer> array, int n, int startingIndex) {
if (array.get(startingIndex) == n) { return startingIndex; }
else if (startingIndex == array.size() - 1) { return -1; }
else { recursiveLinearSearch(array, n, startingIndex); }
}
The recursive call does not increment startingIndex, leading to infinite recursion. Should be recursiveLinearSearch(array, n, startingIndex + 1).
What does the following code output?
java
ArrayList<Integer> arr = new ArrayList<>(Arrays.asList(5, 2, 8, 1, 9));
int index = recursiveLinearSearch(arr, 10, 0);
System.out.println(index);
-1
What does the following code output?
java
ArrayList<Integer> arr = new ArrayList<>(Arrays.asList(1, 2, 5, 8, 9));
int index = recursiveBinarySearch(arr, 10, 0, arr.size() - 1);
System.out.println(index);
-1
Why must a list be sorted for Binary Search?
Binary search works by repeatedly dividing the search interval in half. This requires knowing whether the target value is in the lower or upper half, which is only possible if the list is sorted.
What is the core idea behind Merge Sort?
Divide the list into smaller sublists, recursively sort the sublists, and then merge them back together in sorted order.
What is the time complexity of Linear Search?
O(n) in the worst case, where n is the number of elements in the list.
What is the time complexity of Binary Search?
O(log n), where n is the number of elements in the list.
What is the time complexity of Insertion Sort?
O(n^2) in the worst and average cases, where n is the number of elements in the list.
What is the time complexity of Selection Sort?
O(n^2) in all cases, where n is the number of elements in the list.
What is the time complexity of Merge Sort?
O(n log n) in all cases, where n is the number of elements in the list.
What is the space complexity tradeoff of Merge Sort?
Merge Sort requires more memory due to the creation of temporary arrays during the merge process.
What is the benefit of using recursion?
Recursion can make code more concise and easier to read for certain problems.
What is a potential drawback of using recursion?
Recursion can lead to stack overflow errors if the base case is not reached or the recursion depth is too large.
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.
What are the differences between Insertion Sort and Selection Sort?
Insertion Sort: Builds sorted array incrementally, adaptive. Selection Sort: Finds the minimum element in each iteration, not adaptive.
What are the differences between Insertion Sort and Merge Sort?
Insertion Sort: Simple, in-place, O(n^2) time complexity. Merge Sort: More complex, requires extra space, O(n log n) time complexity.
What are the differences between Selection Sort and Merge Sort?
Selection Sort: Simple, in-place, O(n^2) time complexity. Merge Sort: More complex, requires extra space, O(n log n) time complexity.
What are the differences between iterative and recursive Linear Search?
Iterative: Uses loops, generally more efficient in terms of memory. Recursive: Uses function calls, can be more concise, but may lead to stack overflow.
What are the differences between iterative and recursive Binary Search?
Iterative: Uses loops, generally more efficient in terms of memory. Recursive: Uses function calls, can be more concise, but may lead to stack overflow.
What are the differences between iterative and recursive Insertion Sort?
Iterative: Uses loops, generally more efficient in terms of memory. Recursive: Uses function calls, can be more concise, but may lead to stack overflow.
What are the differences between iterative and recursive Selection Sort?
Iterative: Uses loops, generally more efficient in terms of memory. Recursive: Uses function calls, can be more concise, but may lead to stack overflow.
What are the differences between iterative and recursive Merge Sort?
Iterative: Uses loops, generally more efficient in terms of memory. Recursive: Uses function calls, can be more concise, but may lead to stack overflow.
When is Merge Sort preferred over Insertion Sort?
Merge Sort is preferred for larger datasets due to its O(n log n) time complexity, while Insertion Sort is better for small datasets or nearly sorted data.