Insertion sort algorithm pseudo code
for i = 1 to length(A) – 1
x = A[i]
j = i
while j > 0 and A[j-1] > x
A[j] = A[j-1]
j = j – 1
A[j] = x
end while
end for
এটা হল insertion sort pseudo code
এখন দেখাযাক ইন্সারসন সরট কিভাবে কাজ করে
১। insertion sort এর ক্ষেত্রে প্রথম নাম্বারটাকে sorted ধরা হয় ।
২। পরে ২ নাম্বার element(অর্থাৎ ডানপাশের element) এর সাথে ১ নাম্বার element(অর্থাৎ বামপাশের element) তুলনা করা হয় যে; ২ নাম্বার element ১ নাম্বার element এর ছেয়ে ছোট কিনা
যদি ছোট হয় তাহলে পরিবর্তন করা।
৩। পরে বামপাশের element গুলুকে sorted ধরা হয় এবং ডানপাশেরটার সাথে তুলনা করাহয় এবং ২ নং রিপিট করা হয় ।
এখন একটা উদাহারন দেখাযাক
বর্ণনা
এখানে ৬ টি unsorted number আছে প্রথম element হিসাবে আছে ৫ যাকে আমরা sorted ধরে নিই
এখন প্রথম element এর সাথে ২ element তলনা করব যে প্রথমটা বড় কিনা ? এখানে যেহেতু প্রথম নাম্বার বড় তাই পরিবর্তন করতে হবে
পরিবর্তন করার পর ২ ৫ ৪ ৬ ১ ৩
এবার ২ এবং ৫ কে sorted ধরা হয় এবং পরে আগের মত ডানপাশের টার সাথে তুলনা করতে হবে
৫ এর ডানপাশের element ৪
এখন তুলনা করব যে বামপাশের element ৫ ; ডানপাশের element ৪ এর ছেয়ে বড় কিনা
যেহেতু ৪<৫
তাই পরিবর্তন করতেহবে
এবার তুলনা করতেহবে ২ এবং ৪ এর মধ্যে
এখানে যেহেতু ২<৪ (মপাশের element ডানপাশের element এর ছেয়ে ছোট)
তাই যেমন আছে তেমন ই থাকবে
এবং পরিবর্তন করার পর ২ ৪ ৫ ৬ ১ ৩
একই ভাবে পরবর্তীতে
৫<৬ সত্য তাই যেমন আছে তেমন ই থাকবে
৬<১ মিথ্যা তাই পরিবর্তন করতে হবে
পরিবর্তন করার পর ২ ৪ ৫ ১ ৬ ৩
এখন ১ কে বামপাশের প্রত্যেকটা element এর সাথে তুলনা করতে হবে যতক্ষণ ১ এর proper place না পাউয়া যাবে
৫<১ মিথ্যা তাই পরিবর্তন করতে হবে
২ ৪ ১ ৫ ৬ ৩
৪<১ মিথ্যা তাই পরিবর্তন করতে হবে
২ ১ ৪ ৫ ৬ ৩
২<১ মিথ্যা তাই পরিবর্তন করতে হবে
১ ২ ৪ ৫ ৬ ৩
এখন লুপ শেষ হবে
এখন ও পুরুপুরি sorted হয়নি
আবার লুপ চালাতে হবে
এখন sorted number গুলুর মধ্যে সবছেয়ে ডানে আছে ৬ তাই ; ৬ কে লাস্ট element ৩ এর সাথে তুলনা করা হয়
৬< ৩ মিথ্যা তাই পরিবর্তন করতে হবে
১ ২ ৪ ৫ ৩ ৬
এখন পূর্বের মত লুপ চালাতে হবে যতক্ষণ ৩ proper place এ না যাবে
৫<৩ মিথ্যা তাই পরিবর্তন করতে হবে
১ ২ ৪ ৩ ৫ ৬
৪<৩ মিথ্যা তাই পরিবর্তন করতে হবে
১ ২ ৩ ৪ ৫ ৬
২<৩ সত্য তাই এখানে লুপ শেষ হবে
এবং ১ ২ ৩ ৪ ৫ ৬ ই হল sorted array
এখন c program implementation দেখাযাক
#include<stdio.h>
int main()
{
int i,j,s,temp,a[20];
printf(“Enter the number of element\n”);
scanf(“%d”,&s);
printf(“Enter %d elemnts\n”,s);
for(i=0;i<s;i++)
scanf(“%d,”,&a[i]);
for(i=1;i<s;i++)
{
temp=a[i];
j=i-1;
while((temp<a[j])&&(j>=0))
{
a[j+1]=a[j];
j=j-1;
}
a[j+1]=temp;
}
printf(“After sorting\n”);
for(i=0;i<s;i++)
printf(“%d”,a[i]);
}
এখানে insertion sort শুরু হয়েছে
For লুপ থেকে
Temp variable এর মধ্যে ডানপাশের element কে রাখা হয়েছে
এবং while loop এর মাধ্যমে দেখা হচ্ছে যে ডানপাশের element বামপাশের এলেমেন্ত থেকে ছোট কিনা
ছোট হলে লুপ এর মধ্যে প্রবেশ করবে
এবং
a[j+1]=a[j] মানে
value swap এখানে যেহেতু j=i-1 =0
j এর ভেলু ০ তাই
a[j+1] অর্থাৎ ২য় array index এ প্রথম index এর মান বসবে
আমাদের উদাহারন এর ক্ষেত্রে এটা হবে
৫ , ২ এর জায়গায় বসবে । কারন এখানে ৫ প্রথম element and ২ এর ছেয়ে ছোট
এভাবে প্রত্যেকটা element while loop এ চেক হবে।