Foundationপ্রথম নীতি থেকে
LEVEL 6 · Data Structures & Algorithms

Quicksort

কুইকসর্ট

Pivot বেছে array-কে ছোট-বড় দুই ভাগে partition করে প্রতিটা ভাগ recursively sort করা divide-and-conquer — average O(n log n), in-place, কিন্তু unstable।

also: quick sort, partition-exchange sort

Partition-ই সব কাজ করে — pivot-এর সঠিক জায়গা ঠিক করে, ছোটগুলো বামে বড়গুলো ডানে ফেলে:

def partition(a, lo, hi):
    p = a[hi]; i = lo
    for j in range(lo, hi):
        if a[j] < p:
            a[i], a[j] = a[j], a[i]; i += 1
    a[i], a[hi] = a[hi], a[i]
    return i

Average O(n log n); sorted input-এ প্রথম/শেষ element pivot হলে O(n²)। Randomized pivot বা median-of-three দিলে ওই দুর্ভাগ্য বাস্তবে অসম্ভব।

Extra array লাগে না, swap local — cache-friendly, তাই practical দৌড়ে প্রায়ই দ্রুততম comparison sort। C++ std::sort-এর introsort এটা দিয়েই শুরু করে।