7. Arrays - Introduction
অ্যারে হলো একই ধরণের ডেটা আইটেম বা এলিমেন্টের একটি সংগ্রহ যা কম্পিউটারের মেমরিতে পাশাপাশি (Contiguous memory locations) সংরক্ষিত থাকে। এটি সবচেয়ে সহজ এবং বহুল ব্যবহৃত ডেটা স্ট্রাকচার।
অ্যারে কি?
সহজ কথায়, অ্যারে হলো একটি কন্টেইনার যা নির্দিষ্ট সংখ্যক ভ্যালু ধরে রাখতে পারে। এই ভ্যালুগুলো অবশ্যই একই টাইপের (যেমন: সব পূর্ণসংখ্যা বা সব ক্যারেক্টার) হতে হয়।
অ্যারে ডিক্লারেশন এবং ইনিশিয়ালাইজেশন (Declaration & Initialization)
প্রোগ্রামিং ল্যাঙ্গুয়েজ ভেদে এটি ভিন্ন হতে পারে, তবে মূল ধারণা একই।
- Declaration: মেমরিতে অ্যারের জন্য জায়গা বরাদ্দ করা। (যেমন:
int arr[10];) - Initialization: ডিক্লেয়ার করা অ্যারেতে ভ্যালু সেট করা। (যেমন:
int arr[] = {1, 2, 3};)
এলিমেন্ট এক্সেস করা (Indexing)
অ্যারের প্রতিটি এলিমেন্টের একটি নির্দিষ্ট ঠিকানা বা ইনডেক্স থাকে।
- Zero-based indexing: বেশিরভাগ ল্যাঙ্গুয়েজে অ্যারের প্রথম ইনডেক্স হয় ০।
- উদাহরণ:
arr[0]প্রথম এলিমেন্ট এবংarr[n-1]হলো শেষ এলিমেন্ট।
অ্যারে ট্রাভার্সাল (Array Traversal)
অ্যারের শুরু থেকে শেষ পর্যন্ত প্রতিটি এলিমেন্টে অন্তত একবার ভিজিট করাকে ট্রাভার্সাল বলে। সাধারণত for লুপ বা while লুপ ব্যবহার করে এটি করা হয়।
মেমরি রিপ্রেজেন্টেশন (Memory Representation)
অ্যারের সব এলিমেন্ট কম্পিউটারের মেমরিতে পরপর থাকে।
- যদি প্রথম এলিমেন্টের অ্যাড্রেস (Base Address) জানা থাকে, তবে ইনডেক্স ব্যবহার করে যেকোনো এলিমেন্টের অ্যাড্রেস বের করা সম্ভব:
Address = BaseAddress + Index * SizeOfElement - এই কারণেই অ্যারে থেকে এলিমেন্ট এক্সেস করতে O(1) সময় লাগে।
সুবিধা (Advantages)
- Fast Access: ইনডেক্স জানা থাকলে সরাসরি এলিমেন্ট এক্সেস করা যায়।
- Efficiency: মেমরিতে পাশাপাশি থাকে তাই প্রসেস করা সহজ।
- Easy Implementation: এটি ব্যবহার করা এবং বুঝা খুব সহজ।
অসুবিধা (Disadvantages)
- Fixed Size: একবার ডিক্লেয়ার করলে সাইজ বাড়ানো বা কমানো যায় না (Static Array এর ক্ষেত্রে)।
- Inefficient Insertion/Deletion: মাঝখানে কোনো এলিমেন্ট যোগ বা ডিলেট করলে অন্য এলিমেন্টগুলোকে সরাতে হয়, যা সময়সাপেক্ষ।
- Contiguous Memory: মেমরিতে বড় ফাঁকা জায়গা একনাগাড়ে না থাকলে বড় অ্যারে তৈরি করা সম্ভব হয় না।
IMPORTANT
অ্যারে হলো "Linear Data Structure" এর একটি চমৎকার উদাহরণ। অন্যান্য অনেক ডেটা স্ট্রাকচার (যেমন: Stack, Queue, HashTable) অ্যারে ব্যবহার করেই তৈরি করা হয়।
TIP
কোডিং প্রবলেমে অ্যারের সাইজ বা লেন্থ বের করার মেথড ল্যাঙ্গুয়েজ ভেদে আলাদা হতে পারে (যেমন: C++ এ size(), Java তে .length, Python এ len())।