Merge sort — divide and conquer, O(n log n), stable, proof of correctness
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

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_sortsaari lengths ke liye sahi hai. -
Inductive step: length ke liye, hum
left(size ) aurright(size ) mein split karte hain. IH se dono recursive calls apni halves ke sorted permutations return karti hain.Ab prove karo ki
mergesahi hai (loop invariant):- Initialization:
out=[]— vacuously true. - Maintenance: hum append karte hain, jo
outmein 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
outke sab se ). Tohoutka ek sorted permutation hai. ✓
Isliye
merge(left,right)ka ek sorted permutation return karta hai. Induction se algorithm saare ke liye sahi hai. - Initialization:
Worked examples
Flashcards
Merge sort ke teen steps kya hain?
Merge kyun hai?
Merge sort recurrence likhو.
Recurrence kyun deta hai?
Merge sort ka best / average / worst time kya hai?
Merge sort ki space complexity kya hai?
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?
Merge sort insertion sort jaisa kyun nahi hai?
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.