In merge sort, the process of merging two sorted subarrays into a single sorted array is known as _______.
- Blending
- Combining
- Concatenation
- Merging
In merge sort, the process of merging two sorted subarrays into a single sorted array is known as merging. This step is crucial for achieving the overall sorted order of the elements in the array.
Imagine you're sorting a list of strings containing people's names. Would radix sort be a suitable choice for this scenario? Why or why not?
- Maybe, it depends on the length of the names
- No, Radix Sort is not suitable
- Only Merge Sort is suitable
- Yes, Radix Sort is suitable
Radix sort is not suitable for sorting strings with variable lengths. It operates based on the position of digits, making it more suitable for fixed-length integers. For variable-length strings like names, merge sort would be a better choice, as it doesn't rely on specific positions.
How does Insertion Sort algorithm work?
- Divides the array into subproblems
- Incrementally builds the sorted subarray by shifting elements
- Randomly selects elements and sorts them
- Swaps elements with a pivot
Insertion Sort works by incrementally building the sorted subarray. It starts with a single element and gradually adds more elements to the sorted subarray by shifting elements to their correct positions. This process is repeated until the entire array is sorted.
How does radix sort handle sorting negative numbers?
- By excluding negative numbers from the sorting process
- By treating all numbers as positive during sorting
- By using a separate process for negative numbers after sorting positive ones
- By using techniques like two's complement to represent negative numbers
Radix sort typically handles negative numbers by using techniques like two's complement to represent them as positive numbers during the sorting process. Negative numbers are effectively treated as positive.
Can you explain the concept of lossless and lossy compression in the context of string compression algorithms?
- Lossless compression discards some data during compression but can fully recover the original data during decompression.
- Lossless compression retains all original data during compression and decompression.
- Lossy compression intentionally discards some data during compression, and the lost data cannot be fully recovered during decompression.
- Lossy compression retains all original data during compression but sacrifices some data during decompression.
In the context of string compression algorithms, lossless compression retains all original data during compression and decompression. On the other hand, lossy compression intentionally discards some data during compression, and the lost data cannot be fully recovered during decompression. The choice between lossless and lossy compression depends on the application's requirements and the acceptable level of data loss.
What does topological sorting primarily aim to do in a directed graph?
- Arranges the vertices in a linear order such that for every directed edge (u, v), vertex u comes before vertex v in the order.
- Finds the shortest path between two vertices in the graph.
- Identifies cycles in the graph.
- Rearranges the vertices randomly.
Topological sorting in a directed graph aims to arrange the vertices in a linear order such that for every directed edge (u, v), vertex u comes before vertex v in the order. This order is often used to represent dependencies between tasks or events.
Discuss the space complexity of merge sort and how it compares to other sorting algorithms.
- O(log n)
- O(n log n)
- O(n)
- O(n^2)
Merge sort has a space complexity of O(n) due to its need for additional memory. This is more efficient than algorithms with higher space complexity, like quicksort with O(n^2) in the worst case, making merge sort advantageous in terms of space usage.
Selection sort is not suitable for _______ datasets as it performs a fixed number of comparisons and swaps.
- Large
- Randomized
- Small
- Sorted
Selection sort is not suitable for large datasets as it performs a fixed number of comparisons and swaps. Regardless of the input, it always performs the same number of operations, making it inefficient for large datasets.
You're developing software for a ride-sharing service. How might you use a queue to handle incoming ride requests and allocate drivers to passengers?
- Allocate drivers based on a first-come, first-served basis from the queue.
- Assign drivers based on random selection for variety.
- Implement a queue where the longest waiting driver is assigned to the next ride.
- Use a priority queue to allocate drivers based on passenger ratings.
In a ride-sharing service, using a queue for driver allocation involves assigning drivers on a first-come, first-served basis from the queue. This ensures fairness and efficiency in handling incoming ride requests.
In which scenario would you choose Dijkstra's algorithm over Bellman-Ford or Floyd-Warshall algorithms?
- In scenarios where the graph has cycles.
- When dealing with a graph with negative edge weights.
- When the graph has both positive and negative edge weights.
- When working with a graph with non-negative edge weights.
Dijkstra's algorithm is preferred over Bellman-Ford or Floyd-Warshall algorithms when working with a graph that has non-negative edge weights. Unlike Bellman-Ford, Dijkstra's algorithm does not handle negative weights and is more efficient in such scenarios.