সিলেকশন সর্ট অ্যালগরিদম অনসোর্টেড অংশ থেকে ন্যূনতম এলিমেন্ট বারবার খুঁজে বের করে সর্টেড অংশের শুরুতে রাখে। প্রতিটি ইটেরেশনে অনসোর্টেড সাবঅ্যারেতে ন্যূনতম এলিমেন্ট পিক করে সর্টেড সাবঅ্যারেতে সরিয়ে দেয়।
উদাহরণ
#include <iostream>
#include <string.h>
using namespace std;
#define MAX_LEN 50
void selectionSort(char arr[][50], int n){
int i, j, mIndex;
// অনসোর্টেড সাবঅ্যারের বাউন্ডারি একে একে সরান
char minStr[50];
for (i = 0; i < n-1; i++){
// অনসোর্টেড অ্যারেতে ন্যূনতম এলিমেন্ট নির্ধারণ
int mIndex = i;
strcpy(minStr, arr[i]);
for (j = i + 1; j < n; j++){
// চেক করুন minStr arr[j] থেকে বড় কিনা
if (strcmp(minStr, arr[j]) > 0){
// arr[j]-কে minStr বানান এবং min_idx আপডেট
strcpy(minStr, arr[j]);
mIndex = j;
}
}
// ন্যূনতম এলিমেন্টকে প্রথম এলিমেন্টের সাথে স্ব্যাপ
if (mIndex != i){
char temp[50];
strcpy(temp, arr[i]); // swap item[pos] and item[i]
strcpy(arr[i], arr[mIndex]);
strcpy(arr[mIndex], temp);
}
}
}
int main(){
char arr[][50] = {"Tom", "Boyaka", "Matt", "Luke"};
int n = sizeof(arr)/sizeof(arr[0]);
int i;
cout << "Given String is:: Tom, Boyaka, Matt, Luke\n";
selectionSort(arr, n);
cout << "\nSelection Sorted is::\n";
for (i = 0; i < n; i++)
cout << i << ": " << arr[i] << endl;
return 0;
}
উপরের C++ প্রোগ্রামটি প্রথমে অ্যারেতে সবচেয়ে ছোট এলিমেন্ট বের করে প্রথম এলিমেন্টের সাথে স্ব্যাপ করে। এরপর দ্বিতীয় সবচেয়ে ছোট এলিমেন্ট দ্বিতীয় পজিশনে স্ব্যাপ করে। এইভাবে প্রতিটি পাসে ন্যূনতম এলিমেন্ট বের করে সঠিক পজিশনে রাখা হয় যতক্ষণ না পুরো অ্যারে সর্ট হয়। চূড়ান্তভাবে সিলেকশন সর্ট মেথড দেওয়া স্ট্রিংকে অ্যাসেন্ডিং অর্ডারে সর্ট করে:
আউটপুট
Given string is:: Tom, Boyaka, Matt, Luke Selection Sorted:: Boyaka Luke Matt Tom