Relational operators in C++ - Time & Space Complexity
Relational operators compare values to decide true or false. We want to see how long these comparisons take as input changes.
How does the time to compare values grow when we use relational operators in code?
Analyze the time complexity of the following code snippet.
int compareValues(int a, int b) {
if (a < b) {
return -1;
} else if (a == b) {
return 0;
} else {
return 1;
}
}
This code compares two numbers and returns which one is smaller, or if they are equal.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Up to two relational comparisons (<, ==)
- How many times: Each comparison runs once per function call
Each time we call the function, it does a fixed number of comparisons regardless of the numbers' size.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | Up to 2 comparisons |
| 100 | Up to 2 comparisons |
| 1000 | Up to 2 comparisons |
Pattern observation: The number of operations stays the same no matter how big the input numbers are.
Time Complexity: O(1)
This means the time to compare two values does not grow with input size; it stays constant.
[X] Wrong: "Comparing bigger numbers takes more time than smaller numbers."
[OK] Correct: Computers compare numbers by their bits in fixed steps, so size does not affect comparison time.
Understanding that relational operators run in constant time helps you reason about bigger algorithms where comparisons happen many times.
"What if we compared two arrays element by element instead of two single values? How would the time complexity change?"
Practice
Which of the following relational operators checks if two values are not equal in C++?
Solution
Step 1: Understand the meaning of each operator
The operator==checks equality,<=and>=check less or equal and greater or equal respectively.Step 2: Identify the operator for 'not equal'
The operator!=means 'not equal' in C++.Final Answer:
!= -> Option BQuick Check:
Not equal operator = != [OK]
- Confusing == with !=
- Thinking <= means not equal
- Mixing up >=
- Using = instead of ==
Which of the following is the correct syntax to compare if a is greater than b in C++?
int a = 5, b = 3;
if (___) {
// code
}Solution
Step 1: Recall the correct operator for 'greater than'
The operator for 'greater than' is>. The operator>=means 'greater than or equal to'.Step 2: Check syntax correctness
a > bis the correct syntax to check ifais strictly greater thanb. Other options are invalid syntax.Final Answer:
a > b -> Option AQuick Check:
Greater than operator = > [OK]
- Using => instead of >=
- Using >< which is invalid
- Confusing >= with >
- Missing spaces causing syntax errors
What will be the output of the following C++ code?
int x = 7, y = 10;
if (x <= y) {
std::cout << "Yes";
} else {
std::cout << "No";
}Solution
Step 1: Evaluate the relational expression
Check ifx <= ymeans 7 is less than or equal to 10, which is true.Step 2: Determine which branch executes
Since the condition is true, theifblock runs and prints "Yes".Final Answer:
Yes -> Option DQuick Check:
7 <= 10 is true, so output is Yes [OK]
- Confusing <= with <
- Assuming else block runs
- Printing variable values instead of strings
- Ignoring the condition result
Find the error in the following C++ code snippet:
int a = 4, b = 9;
if (a = b) {
std::cout << "Equal";
} else {
std::cout << "Not Equal";
}Solution
Step 1: Identify the operator in the if condition
The condition usesa = b, which assigns value ofbtoainstead of comparing.Step 2: Correct the operator for comparison
To compare, the operator should be==, so the condition should bea == b.Final Answer:
Using assignment operator instead of equality operator in if condition -> Option CQuick Check:
Use == for comparison, not = [OK]
- Using = instead of ==
- Forgetting to compare variables
- Assuming assignment returns boolean false
- Ignoring compiler warnings
Given the code below, what will be the output?
int a = 5, b = 5, c = 10;
if (a == b && c > b) {
std::cout << "Match";
} else if (a != b || c < b) {
std::cout << "Mismatch";
} else {
std::cout << "Unknown";
}Solution
Step 1: Evaluate the first if condition
Checka == b(5 == 5) is true, andc > b(10 > 5) is true, so the whole condition is true.Step 2: Determine which block executes
Since the first condition is true, "Match" is printed and the rest is skipped.Final Answer:
Match -> Option AQuick Check:
Both conditions true, so output is Match [OK]
- Confusing && and || operators
- Ignoring short-circuit evaluation
- Assuming else if runs after true if
- Misreading relational comparisons
Ready to prove it?
Pass the test and this pattern moves unknown
