MASTER YOUR LOGIC BUILDING:Phase 4 - Level 5: Logical & Applied

Mastering phase 4 - level 5: logical & applied concepts and implementation.

Phase 4 - Level 5: Logical & Applied

Why This Level Is Different

You've learned to store, search, transform, and compare lists. Now you combine those skills to answer property questions about data: Is it sorted? What's the second-largest score? How often does each value appear?

These are the problems that show up in assignments and interviews — not one trick, but 2–3 simple passes over a list chained together.

What You'll Learn

  • Check if a list is sorted
  • Find second largest (and why one pass isn't always enough at first)
  • Frequency thinking — how many times each value appears
  • Applied patterns: pairs, averages, excluding extremes

Is the List Sorted?

is_sorted = True
for i in range(len(arr) - 1):
    if arr[i] > arr[i + 1]:   # current beats next → out of order
        is_sorted = False
        break

You only compare neighbors — if every pair is fine, the whole list is ascending.

Second Largest — Two Passes, Clear Logic

Pass 1: find the maximum.

max_val = arr[0]
for x in arr:
    if x > max_val:
        max_val = x

Pass 2: find the largest value that isn't max_val.

second = None
for x in arr:
    if x != max_val:
        if second is None or x > second:
            second = x
Edge case: If every element is the same ([5,5,5]), there is no second largest — handle second is None.

Frequency — Count How Often Things Appear

Ask: "For each value, how many times did I see it?" Start with nested loops or a dictionary later; the idea is compare every element to every other (or track counts as you go).

Applied problems often mix ideas:

  • Pairs with sum — two nested loops, check if arr[i] + arr[j] == target
  • Above average — first compute average, then count elements greater than it

Step-by-Step Thinking Process

  1. Restate the question in plain English — "every next number is bigger" → neighbor loop.
  2. Plan passes — Can one loop track max and second max? (Yes, with practice — but two passes is clearer to start.)
  3. Edge cases first — empty list, one element, all duplicates.
  4. Combine skills — search + count + comparison often appear in one problem.

Common Mistakes & Tips

  • Off-by-one in sorted check — loop to len(arr) - 1, because you access arr[i + 1].
  • Second largest = second distinct value? — clarify the problem; usually it means largest after ignoring one copy of max.
  • Updating max without resetting second — after finding a new max in one-pass solutions, reset second carefully.
  • Tip: Write Pass 1 / Pass 2 comments in your code — examiners (and future you) see the plan clearly.

Practice Focus

Tackle Check if Array is Sorted and Find Second Largest below. Then invent your own test: sorted list, reverse-sorted list, duplicates, and a list with only two elements. Applied list logic is mostly confidence in looping — you're ready for that now.

Hands-on Examples

Check if Array is Sorted

# Take array
n = int(input("Enter array size: "))
arr = []
for i in range(n):
    arr.append(int(input(f"Enter element {i+1}: ")))

# Check if sorted
is_sorted = True
for i in range(len(arr) - 1):
    if arr[i] > arr[i + 1]:
        is_sorted = False
        break

if is_sorted:
    print("Array is sorted in ascending order")
else:
    print("Array is not sorted")

Compare each element with next. If any element is greater than next, array is not sorted. If all comparisons pass, array is sorted.