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

C++-এ রিকারসিভ সিলেকশন সর্ট


সিলেকশন সর্ট একটি সর্টিং অ্যালগরিদম যা অ্যারেটি শুরু থেকে ডাকচে চলতে থাকে এবং প্রতিটি এলিমেন্টকে বাঁকি লিস্টের সবচেয়ে ছোট এলিমেন্ট দিয়ে রিপ্লেস করে। বামপাশের অংশ সর্টেড থাকে, ডানপাশের অনসর্টেড।

সিলেকশন সর্ট অ্যালগরিদম

  • int arr[5] = {5,4,2,1,3};

  • for i=0 to size-2 → for j=i+1 to size-1 ছোটটি খুঁজুন, তারপর arr[i] দিয়ে স্ব্যাপ করুন।

রিকারসিভ সিলেকশন সর্ট

  • ন্যূনতম এলিমেন্টের ইনডেক্স খুঁজুন।

  • যদি ন্যূনতম ইনডেক্স == অ্যারে সাইজ হয়, ফেরত যান।

  • অন্যথায় বর্তমান এলিমেন্ট ও ন্যূনতম এলিমেন্ট স্ব্যাপ করুন।

  • বাঁকি অনসর্টেড অংশে রিকারসিভ কল দিন।

উদাহরণ

ইনপুট − Arr[] = {5,7,2,3,1,4}, length=6

আউটপুট − সর্টেড অ্যারে: 1 2 3 4 5 7

ইনপুট − Arr[] = {1,2,3,3,2}

আউটপুট − সর্টেড অ্যারে: 1 2 2 3 3

প্রোগ্রামে ব্যবহৃত পদ্ধতি

রিকারসিভ সিলেকশন সর্টের বেস কেস: minIndex == size-1। অন্যথায় ন্যূনতম খুঁজে স্ব্যাপ করে ডানপাশ রিকারসিভ সর্ট।

  • ইনপুট অ্যারে Arr[] ও দৈর্ঘ্য length।

  • findMin(int arr[], int i, int j) ফাংশন i+1 থেকে j পর্যন্ত ন্যূনতম ইনডেক্স ফেরত দেয়।

  • যদি i == j হয়, i ফেরত দিন।

  • অন্যথায় minpos = findMin(arr, i+1, j); যদি arr[i] < arr[minpos] হয়, minpos = i।

  • recurselectSort(int arr1[], int len1, int pos1) ফাংশন রিকারসিভভাবে সর্ট করে।

  • যদি pos1 == len1 হয়, ফেরত যান।

  • minpos1 = findMin(arr1, pos1, len1-1)।

  • যদি minpos1 != pos1 হয়, স্ব্যাপ করুন।

  • recurselectSort(arr1, len1, pos1+1) কল করুন।

উদাহরণ কোড

#include <iostream>
using namespace std;

int findMin(int arr[], int i, int j){
    int minpos;
    if (i == j){
        return i;
    }
    minpos = findMin(arr, i + 1, j);
    if(arr[i] < arr[minpos]){
        minpos = i;
    }
    return minpos;
}

void recurselectSort(int arr1[], int len1, int pos1){
    int temp, minpos1;
    if (pos1 == len1){
        return;
    }
    minpos1 = findMin(arr1, pos1, len1-1);
    if (minpos1 != pos1){
        temp = arr1[pos1];
        arr1[pos1] = arr1[minpos1];
        arr1[minpos1] = temp;
    }
    recurselectSort(arr1, len1, pos1 + 1);
}

int main(){
    int Arr[] = {1,5,3,0,9,3,5};
    int length = sizeof(Arr)/sizeof(Arr[0]);
    recurselectSort(Arr, length, 0);
    cout << "Sorted Array using recursive Selection sort: " << endl;
    for (int i = 0; i < length; i++){
        cout << Arr[i] << " ";
    }
    return 0;
}

আউটপুট

উপরের কোড রান করলে নিচের আউটপুট পাওয়া যাবে:

Sorted Array using recursive Selection sort: 0 1 3 3 5 5 9
  1. C++-এ সম অ্যারে পাজল (Sum Array Puzzle) সমাধান

  2. C++-এ ২D অ্যারে ফাংশনে পাস করা

  3. C++ প্রোগ্রাম: কাউন্টিং সর্ট বাস্তবায়ন

  4. C++ প্রোগ্রাম: সিলেকশন সর্ট বাস্তবায়ন