3.6.3 · HinglishSorting & Searching

Quick sort — Lomuto - Hoare partition, pivot strategies, expected O(n log n), worst case

2,517 words11 min readRead in English

3.6.3 · Coding › Sorting & Searching


1. The skeleton

KYA cheez quicksort ko merge sort se alag karti hai: merge sort trivially split karta hai (middle index) aur kaam merging mein karta hai; quicksort kaam splitting mein karta hai aur trivially merge karta hai. Pivot choice hi algorithm hai.


2. Lomuto partition (aasaan wala)


3. Hoare partition (efficient original)


4. Average kyun — derive karo

Derivation (recurrence, balanced case). Master Theorem se (, with ): regular case deta hai

9-to-1 split bhi theek hai. Maan lo har split vs hai: Sabse lamba root-to-leaf path har step mein factor se chhhota hota hai, toh depth , aur har level cost karta hai → phir bhi .

Random pivots par average — comparisons count karo. Sorted order mein elements ko maan lo hain. Indicator maan lo agar aur kabhi bhi compare hote hain.

Yeh step kyun? "Gap se pehla pivot" argument ek messy recursion ko clean indicator-variable probabilities mein badal deta hai — yahi 80/20 insight hai jo memorize karne layak hai.


5. Worst case — aur isse kaise bachein

Yeh Lomuto + last-element pivot ke saath already sorted (ya reverse-sorted) array par hota hai — classic gotcha.

Figure — Quick sort — Lomuto - Hoare partition, pivot strategies, expected O(n log n), worst case

6. Properties summary


7. Active recall

Recall Quick self-test (answers cover karo)
  • Lomuto pivot ko end mein correctly kyun place karta hai? → invariant guarantee karta hai pivot, toh pivot par belong karta hai.
  • Hoare ki return value ka kya matlab hai? → ek split boundary, pivot ka index nahi.
  • Do elements ke compare hone ki probability? → .
  • Last-element pivot ke saath worst case kab trigger hota hai? → sorted / reverse-sorted input.
Quicksort ki core idea kya hai?
Ek pivot chuno, partition karo taaki chhote elements left jaayein aur bade right (pivot final position mein land kare), phir dono sides par recurse karo.
Lomuto partition kya return karta hai?
Pivot ka final sorted index (i+1).
Hoare partition kya return karta hai?
Ek partition boundary j; pivot ka j par hona guaranteed NAHI hai, toh (lo,j) aur (j+1,hi) par recurse karo.
Hoare Lomuto se kam swaps kyun karta hai?
Yeh sirf genuinely out-of-place pairs ko do converging pointers se swap karta hai, bajaye har chhote element ko scan karte waqt swap karne ke.
Quicksort ki average time complexity kya hai aur kyun?
Θ(n log n); balanced (constant-fraction) splits O(log n) depth dete hain with O(n) work per level.
Sorted elements z_i aur z_j ke kabhi compare hone ki probability kya hai?
2/(j−i+1) — yeh tabhi compare hote hain jab unme se ek {z_i..z_j} se pehla pivot chuna jaaye.
Randomized quicksort ka expected comparison count kya hai?
Approximately 2n·H_n ≈ 1.39 n log₂ n = Θ(n log n).
Quicksort O(n²) kab hit karta hai?
Jab pivots consistently min/max hote hain, e.g. sorted/reverse-sorted input par last-element pivot, ek baar mein ek element peel karta hua.
Random pivot kaise help karta hai, aur kya fix NAHI karta?
Yeh kisi bhi fixed worst-case input ko hata deta hai (expected n log n), lekin worst case phir bhi O(n²) hai — bas astronomically unlikely.
Median-of-three kya hai?
A[lo], A[mid], A[hi] ka median pivot ki tarah choose karo sorted-array worst case se bachne ke liye.
Introsort kya hai?
Quicksort jo heapsort par switch kar leta hai jab recursion depth ~2 log n se zyada ho jaaye, O(n log n) guarantee karta hua.
Kya quicksort stable hai?
Nahi — swaps equal keys ko reorder kar sakte hain.
Stack space O(log n) kaise rakho?
Pehle chhote partition par recurse karo aur bade par loop (tail-call) karo.
Bahut saare duplicate keys efficiently kaise handle karein?
3-way (Dutch national flag) partition <, =, > mein aur equal block skip karo.
Recall Feynman: 12-saal ke bachche ko explain karo

Socho ek line of kids height ke hisaab se sort karni hai. Tum ek bacche ko pakad lete ho (pivot) aur kehte ho: "Jo mere se chhota hai, meri left mein khado; jo lamba hai, right mein." Ab woh baccha exactly wahin hai jahan belong karta hai — woh phir nahi hilega. Tum yahi game left group aur right group par alag alag repeat karte ho. Tab tak karo jab tak har chhota group mein ek baccha ho. Poori line sort ho gayi! Agar tum galti se hamesha sabse chhote bacche ko pivot choose karo, toh har round mein sirf ek baccha place hoga aur bahut time lagega — yahi slow case hai. Ek random baccha choose karna almost hamesha line ko achhi tarah split kar deta hai.

Connections

  • Merge Sort — yeh bhi divide & conquer hai, lekin stable aur guaranteed (kaam merge mein, split mein nahi).
  • Heap SortIntrosort ke andar fallback ki tarah use hota hai.
  • Master Theorem recurrence solve karta hai.
  • Dutch National Flag Problem — duplicate keys ke liye 3-way partition.
  • Randomized Algorithms — random-pivot expectation argument.
  • Quickselect — same partition, -th smallest expected mein dhundhne ke liye use hota hai.
  • Binary Search — already-sorted data par sibling "divide" idea.

Concept Map

step 1

feeds

places

splits into

stops at

method

method

correct by

last element pivot

two pointers

good balance gives

bad choice gives

Quicksort divide and conquer

Pick pivot

Partition

Recurse on two subarrays

Base case size <= 1

Lomuto partition

Hoare partition

Loop invariant

Pivot at final index q

Expected O n log n

Worst case O n^2