Saturday, June 23, 2018

Sorting

মনেকর, তোমার কাছে কিছু সংখ্যা আছে। তোমার গণিতের শিক্ষক বললেন যে সংখ্যাগুলোকে ছোট থেকে বড় এই অর্ডারে সাজাতে হবে। শিক্ষক তোমাকে যে সংখ্যাগুলো সাজাতে বলেছেন তার পরিমান মনে কর ১০০। ১০০ টি সংখ্যা সাজাতে তোমার নিশ্চয় অনেক সময় লাগবে। সর্টিং এলগোরিদম ব্যবহার করে তুমি মুহূর্তের মধ্যেই সংখ্যাগুলো সাজাতে পারো। 
বিশ্ববিদ্যালয়ে আমরা Bubble Sort, Merge Sort, Quick Sort, Selection Sort সহ অনেক সর্টিং এলগোরিদম শিখি; কিন্তু প্রোগ্রামিং প্রতিযোগিতায় আমাদের এতো বেশি সর্টিং করতে হয় যে এই সব সর্টিং এলগোরিদম ইমপ্লিমেন্ট করা সময় সাপেক্ষ। এমন পরিস্থিতিতে STL এর সর্টিং অনেক কাজে আসে। 

এখন মনেকর, a একটি array। a এর  মধ্যে কিছু integer value রাখা আছে। a এর এলিমেন্ট গুলোকে আমরা এখন সর্ট করব ছোট থেকে বড় এই অর্ডারে ।
a[100];
sort(a, a+n); এখানে n হচ্ছে a নামের  array টির এলিমেন্ট সংখ্যা।

আমরা বড় থেকে ছোট এই অর্ডারেও a নামের array টির এলিমেন্ট গুলোকে সাজাতে পারি। ঠিক এই ভাবে -
sort(a, a+n, comp); এখানে comp একটি user defined function যেটি boolean value return করে। comp function টির স্ট্রাকচার এমন -

bool comp(int a, int b)
{
     return a>b;
}

Code:
 
#include<cstdio>
#include<algorithm>
using namespace std;

bool comp(int a, int b)
{
    return a>b;
}

main()
{
    int array1[100],n;
    printf("N=");
    scanf("%d",&n);
    printf("Enter %d items",n);
    for(int i=0; i<n; i++)
    {
        scanf("%d",&array1[i]);
    }
    sort(array1, array1+n);  //Sorting Ascending Order
    printf("After Sorting:");
    for(int i=0; i<n; i++)
    {
        printf("%d ",array1[i]);
    }
    sort(array1, array1+n, comp); //Sorting Descending Order
    printf("After Sorting:");
    for(int i=0; i<n; i++)
    {
        printf("%d ",array1[i]);
    }
}

ভেক্টরে সর্টিং 
আমরা ভেক্টরের এলিমেন্ট গুলোকেও sort() function ব্যবহার করে সর্ট করতে পারি। ভেক্টরের এলিমেন্ট সর্ট করার জন্য সর্ট funtion টি হবে ঠিক এমন-
sort(v.begin(), v.end())->> এভাবে v ভেক্টরের এলিমেন্টগুলোকে ছোট থেকে বড় অর্ডারে সাজানো যায়।

No comments:

Post a Comment