Array indexing and access in C Sharp (C#) - Time & Space Complexity
When we access an element in an array by its position, we want to know how long it takes as the array grows.
We ask: Does it take longer to get an item if the array is bigger?
Analyze the time complexity of the following code snippet.
int[] numbers = {10, 20, 30, 40, 50};
int index = 3;
int value = numbers[index];
Console.WriteLine(value);
This code gets the value at position 3 in the array and prints it.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Accessing a single element by index.
- How many times: Exactly once, no loops or repeated steps.
Accessing an element by index takes the same time no matter how big the array is.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 1 |
| 100 | 1 |
| 1000 | 1 |
Pattern observation: The time stays constant even if the array grows larger.
Time Complexity: O(1)
This means accessing any element by its position takes the same short time, no matter the array size.
[X] Wrong: "Accessing an element takes longer if the array is bigger because it has to look through all items."
[OK] Correct: Arrays allow direct access by position, so the computer jumps straight to the spot without checking others.
Knowing that array access is very fast helps you understand why arrays are useful and when to choose them in real projects.
"What if we used a linked list instead of an array? How would the time complexity of accessing an element by position change?"
Practice
int[] numbers = {10, 20, 30};?Solution
Step 1: Understand zero-based indexing in C# arrays
Arrays in C# start counting indexes from 0, so the first element is at index 0.Step 2: Identify the first element's index
The first element 10 is at index 0, not 1 or any other number.Final Answer:
0 -> Option AQuick Check:
First element index = 0 [OK]
- Thinking the first index is 1
- Confusing element value with index
- Using array length as first index
string[] fruits = {"apple", "banana", "cherry"};?Solution
Step 1: Recall C# array indexing syntax
Arrays use square brackets [] to access elements by zero-based index.Step 2: Identify the correct index for the third element
The third element is at index 2, sofruits[2]is correct.Final Answer:
fruits[2] -> Option AQuick Check:
Third element index = 2 [OK]
- Using parentheses instead of brackets
- Using curly braces instead of brackets
- Using index 3 for third element
int[] values = {5, 10, 15};
Console.WriteLine(values[1]);Solution
Step 1: Identify the element at index 1
The arrayvalueshas elements 5 at index 0, 10 at index 1, and 15 at index 2.Step 2: Determine the output of Console.WriteLine(values[1])
Accessingvalues[1]prints 10 to the console.Final Answer:
10 -> Option CQuick Check:
values[1] = 10 [OK]
- Printing values[0] instead of values[1]
- Confusing index with element value
- Expecting index to start at 1
int[] arr = {1, 2, 3};
Console.WriteLine(arr[3]);Solution
Step 1: Check array size and valid indexes
The array has 3 elements with indexes 0, 1, and 2. Index 3 is outside the array bounds.Step 2: Understand what happens when accessing invalid index
Accessingarr[3]causes a runtime error: IndexOutOfRangeException.Final Answer:
Index out of range runtime error -> Option BQuick Check:
Accessing invalid index causes runtime error [OK]
- Assuming index 3 is valid for 3-element array
- Expecting default zero value for invalid index
- Confusing syntax error with runtime error
int[] data = {2, 4, 6, 8, 10};, which expression correctly changes the last element to 20?Solution
Step 1: Identify the last index of the array
The array has 5 elements, so indexes go from 0 to 4. The last element is at index 4.Step 2: Choose the correct syntax to assign new value
Assigningdata[4] = 20;changes the last element to 20. Usingdata.Lengthor negative indexes is invalid.Final Answer:
data[4] = 20; -> Option DQuick Check:
Last index = Length - 1 = 4 [OK]
- Using data.Length as index (out of range)
- Using negative index (not supported)
- Using index equal to array size
Ready to prove it?
Pass the test and this pattern moves unknown
