3.6.2 · HinglishSorting & Searching

Merge sort — divide and conquer, O(n log n), stable, proof of correctness

1,772 words8 min readRead in English

3.6.2 · Coding › Sorting & Searching


Merge sort KYA hai?

Iska genius yeh hai ki divide step mein koi bhi comparison nahi hoti — bas mid = (lo+hi)/2 hai. Saari intelligence merge mein rehti hai, jo do sorted lists ko do pointers ke saath walk karta hai.


Merging KYU kaam karta hai? (Core sub-routine)

HOW merge works (pointers i, j):
A = [1, 4, 7]    i→
B = [2, 3, 9]    j→
out = []
cmp 1,2 → take 1   out=[1]
cmp 4,2 → take 2   out=[1,2]
cmp 4,3 → take 3   out=[1,2,3]
cmp 4,9 → take 4   out=[1,2,3,4]
cmp 7,9 → take 7   out=[1,2,3,4,7]
A empty → copy 9   out=[1,2,3,4,7,9]

Diagram

Figure — Merge sort — divide and conquer, O(n log n), stable, proof of correctness

Isko likhte kaise hain (Python, definition se derive karke)

def merge(A, B):
    i = j = 0
    out = []
    while i < len(A) and j < len(B):
        # <=  (not <) is what makes merge sort STABLE
        if A[i] <= B[j]:
            out.append(A[i]); i += 1
        else:
            out.append(B[j]); j += 1
    out.extend(A[i:])   # copy leftover
    out.extend(B[j:])
    return out
 
def merge_sort(a):
    if len(a) <= 1:            # base case: already sorted
        return a
    mid = len(a) // 2
    left  = merge_sort(a[:mid])
    right = merge_sort(a[mid:])
    return merge(left, right)

Running time scratch se derive karo

Yeh recurrence kyun? Half size ke do subproblems (2T(n/2)) plus linear-time merge (cn).

Recursion tree se solve karo (HOW):

  • Level : 1 problem of size → kaam .
  • Level : 2 problems of size → kaam .
  • Level : problems of size → kaam .

Har level kaam karta hai. Kitne levels hain? Hum tab tak halve karte hain jab tak size na ho: Total levels . Isliye


Proof of correctness (induction on )

par strong induction se proof.

  • Base case : ya element ki list trivially sorted hai aur apna khud ka permutation hai. ✓

  • Inductive hypothesis (IH): maano merge_sort saari lengths ke liye sahi hai.

  • Inductive step: length ke liye, hum left (size ) aur right (size ) mein split karte hain. IH se dono recursive calls apni halves ke sorted permutations return karti hain.

    Ab prove karo ki merge sahi hai (loop invariant):

    • Initialization: out=[] — vacuously true.
    • Maintenance: hum append karte hain, jo out mein sab se hai (invariant se) aur baaki sabse (kyunki sorted hain). Sortedness aur bound preserve rehta hai.
    • Termination: ek list empty ho jaati hai; hum baaki copy karte hain (already sorted aur out ke sab se ). Toh out ka ek sorted permutation hai. ✓

    Isliye merge(left,right) ka ek sorted permutation return karta hai. Induction se algorithm saare ke liye sahi hai.


Worked examples


Flashcards

Merge sort ke teen steps kya hain?
Divide (aadha split karo), Conquer (halves ko recursively sort karo), Combine (sorted halves ko merge karo).
Merge kyun hai?
Two-pointer walk elements mein se har ek ko exactly ek baar touch karta hai.
Merge sort recurrence likhو.
.
Recurrence kyun deta hai?
levels mein se har ek kaam karta hai; .
Merge sort ka best / average / worst time kya hai?
Sab — structure input-independent hai.
Merge sort ki space complexity kya hai?
extra (in-place nahi).
Merge sort ko stable rakhne ke liye < ya <= comparison kaun sa hai?
<= (ties par left element prefer karo).
Merge loop invariant kya hai?
out sorted hai aur dono inputs ke saare remaining elements se hai.
Merge sort sahi sabit kaise karte hain?
par strong induction + merge loop invariant; base case size .
Merge sort insertion sort jaisa kyun nahi hai?
Sirf merge layers hain, har ek linear, vs kaam ke passes.

Recall Feynman: 12-saal ke bachche ko samjhao

Socho do dost hain jinke paas numbered cards ki sorted stack hai. Unhe ek sorted stack mein milane ke liye, bas har stack ke upar wale card ko compare karo aur chhota lo — bahut aasaan! Merge sort pehle ek gandhi stack ko aadha karta rehta hai jab tak har chhoti stack mein sirf ek card na ho (already "sorted"), phir yeh aasaan combine-game baar baar khelta hai jab tak poori cheez sort na ho jaaye. Kaatna free hai; combine karna smart part hai.

Connections

  • Divide and Conquer — woh general paradigm jiska merge sort udaharan hai.
  • Quick sort — average mein bhi hai lekin in-place aur not stable; merge sort uska stable counterpart hai.
  • Master Theorem directly solve karta hai (Case 2 ⟹ ).
  • Big-O Notation — yahan complexity bounds ki bhasha.
  • Stability of Sorting Algorithms — equal-key order preserve karna kyun matter karta hai.
  • Recursion and Induction — upar use ki gayi proof technique.
  • External Sorting — merge sort RAM se badi data sorting ke liye base hai.

Concept Map

is a

divide

conquer

combine

base case

uses

smallest at a front

gives

recurrence

solves to

solves to

prefer left on ties

Merge sort

Divide and conquer

Split at mid, no comparisons

Recursively sort halves

Merge two sorted lists

Size le 1 already sorted

Two-pointer walk

Each element touched once

Merge cost Theta n

T n = 2T n/2 + n

O n log n

Stable sort