Linear Search Algorithm in DSA C# - Time & Space Complexity
We want to understand how the time taken by linear search changes as the list size grows.
How does the number of steps grow when we look for an item in a list?
Analyze the time complexity of the following code snippet.
public int LinearSearch(int[] arr, int target) {
for (int i = 0; i < arr.Length; i++) {
if (arr[i] == target) {
return i;
}
}
return -1;
}
This code looks through each item in the array one by one to find the target value.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Checking each element in the array one by one.
- How many times: Up to n times, where n is the number of elements in the array.
As the list gets bigger, the number of checks grows roughly the same as the list size.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | Up to 10 checks |
| 100 | Up to 100 checks |
| 1000 | Up to 1000 checks |
Pattern observation: The number of steps grows directly with the size of the list.
Time Complexity: O(n)
This means the time to find the item grows in a straight line with the number of items.
[X] Wrong: "Linear search always takes the same time no matter the list size."
[OK] Correct: The search time depends on how many items are in the list because it may need to check each one.
Understanding linear search time helps you explain why more efficient search methods exist and shows you can analyze simple algorithms clearly.
"What if the array was sorted? How would the time complexity change if we used a different search method?"
Practice
Solution
Step 1: Understand linear search process
Linear search checks each element in order from start to end.Step 2: Compare with other search methods
Other methods like binary search divide the list, but linear search does not.Final Answer:
It checks each element one by one until it finds the value or reaches the end. -> Option AQuick Check:
Linear search = check elements one by one [OK]
- Confusing linear search with binary search
- Thinking linear search sorts the list first
- Assuming linear search uses extra data structures
arr?Solution
Step 1: Identify correct for loop syntax for arrays
In C#, arrays use zero-based indexing, so loop starts at 0 and runs while i < arr.Length.Step 2: Check each option
for (int i = 0; i < arr.Length; i++) uses correct syntax: for (int i = 0; i < arr.Length; i++). Others have errors like starting at 1 or wrong foreach syntax.Final Answer:
for (int i = 0; i < arr.Length; i++) -> Option AQuick Check:
Loop from 0 to Length-1 = for (int i = 0; i < arr.Length; i++) [OK]
- Starting loop at 1 instead of 0
- Using <= instead of < in loop condition
- Incorrect foreach syntax for arrays
int[] arr = {4, 7, 1, 3, 9};
int target = 3;
int index = -1;
for (int i = 0; i < arr.Length; i++) {
if (arr[i] == target) {
index = i;
break;
}
}
Console.WriteLine(index);Solution
Step 1: Trace the loop to find target 3
Check elements: arr[0]=4 (no), arr[1]=7 (no), arr[2]=1 (no), arr[3]=3 (yes), so index = 3 and break.Step 2: Print the index found
After loop, index = 3, so Console.WriteLine prints 3.Final Answer:
3 -> Option DQuick Check:
Target 3 found at index 3 [OK]
- Forgetting to break loop after finding target
- Printing value instead of index
- Confusing index with element value
int[] arr = {2, 5, 8, 12};
int target = 8;
int index = -1;
for (int i = 0; i <= arr.Length; i++) {
if (arr[i] == target) {
index = i;
break;
}
}
Console.WriteLine(index);Solution
Step 1: Analyze loop condition
The loop runs while i <= arr.Length, but valid indices are 0 to arr.Length - 1. Using <= causes out-of-range error.Step 2: Correct the loop condition
Change condition to i < arr.Length to avoid accessing invalid index.Final Answer:
The loop condition should be i < arr.Length, not i <= arr.Length. -> Option CQuick Check:
Loop condition must be less than Length [OK]
- Using <= instead of < in loop condition
- Assuming target not found is a bug
- Changing index initialization unnecessarily
int[] arr = {5, 3, 7, 3, 9}. You want to find the index of the second occurrence of the value 3 using linear search. Which approach is correct?Solution
Step 1: Understand the problem of finding second occurrence
Linear search must count how many times target appears and return index at second time.Step 2: Evaluate options
Sort the array first, then find the value 3. sorts the array, changing indices. Return the first index where value 3 is found. returns only the first occurrence. Use binary search to find the second occurrence. uses binary search, unsuitable for unsorted array and specific occurrences. Use a counter to track occurrences and return index when counter reaches 2. correctly uses a counter to track occurrences and return the index of the second match.Final Answer:
Use a counter to track occurrences and return index when counter reaches 2. -> Option BQuick Check:
Count occurrences to find second index [OK]
- Returning first occurrence instead of second
- Sorting array which changes original order
- Using binary search on unsorted array
Ready to prove it?
Pass the test and this pattern moves unknown
