কম্পিউটার টিউটোরিয়াল

কুইক সোর্ট (Quick Sort)

কুইক সোর্ট একটি ডিভাইড-এন্ড-কঙ্কোয়ার অ্যালগরিদম। একটি পিভট এলিমেন্ট বেছে নিয়ে অ্যারেটিকে দুটি অংশে পার্টিশন করা হয়: বামে পিভটের চেয়ে ছোট, ডানে বড়। তারপর প্রতিটি সাব-অ্যারে রিকারসিভলি সর্ট করা হয়।

কুইক সোর্টের জটিলতা

  • টাইম কমপ্লেক্সিটি: বেস্ট/এভারেজ O(n log n), ওয়ার্স্ট O(n²)
  • স্পেস কমপ্লেক্সিটি: O(log n) (রিকারসন স্ট্যাক)

ইনপুট এবং আউটপুট

Input: The unsorted list: 90 45 22 11 22 50
Output: Array before Sorting: 90 45 22 11 22 50
        Array after Sorting: 11 22 22 45 50 90

অ্যালগরিদম

partition(array, lower, upper) - হোয়ার পার্টিশনিং

Begin
    pivot := array[lower], start := lower, end := upper
    while start < end do
        while array[start] <= pivot AND start < end: start++
        while array[end] > pivot: end--
        if start < end: swap array[start], array[end]
    done
    array[lower] = array[end]; array[end] = pivot
    return end
End

quickSort(array, left, right)

Begin
    if left < right then
        q = partition(array, left, right)
        quickSort(array, left, q-1)
        quickSort(array, q+1, right)
End

C++ উদাহরণ

#include <iostream>
using namespace std;

void swapping(int &a, int &b) { int t=a; a=b; b=t; }
void display(int *a, int n) { for(int i=0;i pivot) end--;
        if(start < end) swapping(array[start], array[end]);
    }
    array[lower] = array[end]; array[end] = pivot;
    return end;
}

void quickSort(int *array, int left, int right) {
    if(left < right) {
        int q = partition(array, left, right);
        quickSort(array, left, q-1);
        quickSort(array, q+1, right);
    }
}

int main() {
    int n; cout << "Enter the number of elements: "; cin >> n;
    int arr[n];
    cout << "Enter elements:" << endl;
    for(int i=0; i> arr[i];
    cout << "Array before Sorting: "; display(arr, n);
    quickSort(arr, 0, n-1);
    cout << "Array after Sorting: "; display(arr, n);
}

আউটপুট

Enter the number of elements: 6
Enter elements: 90 45 22 11 22 50
Array before Sorting: 90 45 22 11 22 50
Array after Sorting: 11 22 22 45 50 90
  1. বাবল সর্ট (Bubble Sort)

  2. C#-এ হিপ সোর্ট (Heap Sort)

  3. C#-এ KeyValuePair লিস্ট সর্ট করা

  4. ইটেরেটিভ কুইক সোর্টের জন্য জাভা প্রোগ্রাম