সমস্যা
কেন বাছাই করা সি ভাষায় অনুসন্ধানকে সহজ করে তোলে? আপনি কিভাবে সি-তে সাজানোর দক্ষতা বিচার করতে পারেন?
সমাধান
বাছাই হল উপাদানগুলিকে আরোহী (বা) অবরোহ ক্রমে সাজানোর প্রক্রিয়া।
-
বাছাই শব্দটি অস্তিত্বে এসেছিল যখন মানুষ দ্রুত অনুসন্ধানের গুরুত্ব উপলব্ধি করে।
-
জীবনের বিভিন্ন জিনিস আছে যা আমাদের অনুসন্ধান করতে হবে, ডাটাবেসের নির্দিষ্ট রেকর্ড, একটি তালিকার রোল নম্বর, একটি টেলিফোন ডিরেক্টরিতে একটি নম্বর, একটি বইয়ের একটি নির্দিষ্ট পৃষ্ঠা ইত্যাদি৷
-
যদি ডেটা একটি ক্রমবিহীন এবং সাজানো আকারে রাখা হয় তবে একটি নির্দিষ্ট জিনিস অনুসন্ধান করা কঠিন হয়ে পড়ে। কিন্তু সৌভাগ্যবশত, বাছাই করার ধারণাটি অস্তিত্বে এসেছে, যার ফলে প্রত্যেকের জন্য একটি ক্রমে ডেটা সাজানো সহজ হয়েছে।
-
বাছাই করা তথ্যকে একটি ক্রমানুসারে সাজায় যা অনুসন্ধানকে সহজ করে তোলে।
বাছাই দক্ষতা
-
আমরা যদি তাসের একটি ডেক ক্রমানুসারে সাজাতে চাই, আমরা প্রতিটি কার্ড পরীক্ষা করে শুরু করব এবং সেই অনুযায়ী আমরা এগিয়ে যাওয়ার সাথে সাথে ডেকটি তৈরি করব।
-
ক্রমানুসারে ডেকটি সাজাতে অনেক সময় লাগে, তবুও আমরা একই পদ্ধতিতে এটি করি। কিন্তু, কম্পিউটার এভাবে কাজ করে না।
-
প্রোগ্রামিং যুগের শুরু থেকে, বিজ্ঞানীরা ডেটা সাজানোর জন্য বিভিন্ন অ্যালগরিদম দ্বারা সাজানোর সমস্যা সমাধানে কাজ করে চলেছেন৷
অন্যটির থেকে কোন অ্যালগরিদম ভালো তা বিচার করার মানদণ্ড নিম্নরূপ -
- প্রদত্ত ডেটা সাজাতে সময় লেগেছে।
- এটি করতে মেমরি স্পেস প্রয়োজন৷ ৷
উদাহরণ
ডাটা সাজানোর জন্য C প্রোগ্রাম নিচে দেওয়া হল -
#include<stdio.h> int main(){ int a[50], i,j,n,t,sm; printf("enter the No: of elements in the list:\n"); scanf("%d", &n); printf("enter the elements:\n"); for(i=0; i<n; i++){ scanf ("%d", &a[i]); } for (i=0; i<n-1; i++){ sm=i; for (j=i+1; j<n; j++){ if (a[j] < a[sm]){ sm=j; } } t=a[i]; a[i]=a[sm]; a[sm]=t; } printf ("after selection sorting the elements are:\n"); for (i=0; i<n; i++) printf("%d\t", a[i]); return 0; }
আউটপুট
যখন উপরের প্রোগ্রামটি কার্যকর করা হয়, তখন এটি নিম্নলিখিত ফলাফল তৈরি করে -
আউটপুট
enter the No: of elements in the list: 4 enter the elements: 34 12 56 7 after selection sorting the elements are: 7 12 34 56