Why arrays are fundamental in Ruby - Performance Analysis
Arrays are one of the most common ways to store lists of items in Ruby.
We want to understand how the time it takes to work with arrays changes as the list gets bigger.
Analyze the time complexity of the following code snippet.
arr = [1, 2, 3, 4, 5]
arr.each do |item|
puts item * 2
end
This code goes through each item in the array and prints double its value.
- Primary operation: Looping through each element of the array.
- How many times: Once for every item in the array.
As the array gets bigger, the time to go through all items grows in a straight line.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 times printing |
| 100 | 100 times printing |
| 1000 | 1000 times printing |
Pattern observation: Doubling the array size doubles the work needed.
Time Complexity: O(n)
This means the time to complete the task grows directly with the number of items in the array.
[X] Wrong: "Accessing any item in an array takes the same time as going through all items."
[OK] Correct: Accessing one item by its position is very fast and does not depend on array size, but going through all items takes longer as the array grows.
Understanding how array operations grow with size helps you explain your code choices clearly and confidently in interviews.
"What if we changed the array to a hash? How would the time complexity for accessing items change?"
Practice
Solution
Step 1: Understand what arrays do
Arrays hold many items together in a specific order, making it easy to manage groups of data.Step 2: Compare options with array features
Only Because they store multiple items in an ordered list correctly describes arrays as ordered collections of multiple items.Final Answer:
Because they store multiple items in an ordered list -> Option BQuick Check:
Arrays = ordered collections [OK]
- Thinking arrays only hold numbers
- Believing arrays are immutable
- Confusing arrays with file operations
Solution
Step 1: Recall Ruby array syntax
Arrays in Ruby are created using square brackets [] with items separated by commas.Step 2: Check each option's syntax
Only array = [1, 2, 3] uses square brackets correctly; others use parentheses, braces, or angle brackets which are invalid for arrays.Final Answer:
array = [1, 2, 3] -> Option AQuick Check:
Arrays use [] brackets [OK]
- Using parentheses instead of brackets
- Confusing arrays with hashes (curly braces)
- Using angle brackets which are invalid
arr = [10, 20, 30] puts arr[1]
Solution
Step 1: Understand array indexing in Ruby
Ruby arrays start at index 0, so arr[0] is 10, arr[1] is 20, arr[2] is 30.Step 2: Identify the value at index 1
The code prints arr[1], which is 20.Final Answer:
20 -> Option AQuick Check:
arr[1] = 20 [OK]
- Thinking array index starts at 1
- Confusing values at different indexes
- Expecting nil for valid index
numbers = [1, 2, 3] numbers.add(4)
Solution
Step 1: Check the method used to add items to arrays
Ruby arrays use 'push' or '<<' to add items, not 'add'.Step 2: Identify the error cause
Calling 'add' on an array causes a NoMethodError because it is not a valid method.Final Answer:
The method 'add' does not exist for arrays -> Option CQuick Check:
Use 'push' or '<<' to add items [OK]
- Using 'add' instead of 'push' or '<<'
- Thinking arrays cannot be changed
- Adding numbers as strings unnecessarily
arr = [1, 2, 3, 4, 5], which Ruby code correctly creates a new array with only even numbers?Solution
Step 1: Understand the goal
We want a new array containing only even numbers from the original array.Step 2: Analyze each option
new_arr = arr.select { |num| num % 2 == 0 } uses 'select' to filter even numbers correctly. new_arr = arr.map { |num| num * 2 } doubles all numbers, not filtering. new_arr = arr.delete_if { |num| num.even? } deletes even numbers, opposite of goal. new_arr = arr.push(2, 4) adds 2 and 4 to original array, not filtering.Final Answer:
new_arr = arr.select { |num| num % 2 == 0 } -> Option DQuick Check:
Use 'select' to filter arrays [OK]
- Using 'map' instead of 'select' for filtering
- Deleting instead of selecting items
- Adding items instead of filtering
Ready to prove it?
Pass the test and this pattern moves unknown
