8. Array Operations
অ্যারের ওপর বিভিন্ন ধরণের অপারেশন চালানো হয়। এই অপারেশনগুলোর লজিক এবং কমপ্লেক্সিটি বোঝা অত্যন্ত জরুরি। সব উদাহরণ এখানে Java এবং Python এ দেওয়া হলো।
1. ইনসার্শন (Insertion)
অ্যারেতে নতুন এলিমেন্ট যোগ করা।
শুরুতে যোগ করা (At Beginning)
অ্যারের একদম শুরুতে নতুন এলিমেন্ট বসানো।
🛠 কর্মপদ্ধতি (Step-by-Step Logic)
- অ্যারের সব এলিমেন্টকে এক ঘর করে ডান দিকে (ডান ইনডেক্সে) সরিয়ে ফেলুন।
- প্রথম ইনডেক্সটি (Index 0) খালি হলে সেখানে নতুন এলিমেন্টটি বসিয়ে দিন।
- অ্যারের সাইজ ১ বৃদ্ধি করুন।
📊 কমপ্লেক্সিটি অ্যানালাইসিস (Complexity Analysis)
- Worst Case: O(n) - সব এলিমেন্ট সরাতে হয়।
- Space Complexity: O(1) - অতিরিক্ত মেমরি লাগে না।
Java Implementation
java
public void insertAtBeginning(int[] arr, int size, int element) {
for (int i = size; i > 0; i--) {
arr[i] = arr[i - 1];
}
arr[0] = element;
}Python Implementation
python
def insert_at_beginning(arr, element):
arr.insert(0, element)যেকোনো পজিশনে (At Position)
নির্দিষ্ট কোনো ইনডেক্সে নতুন এলিমেন্ট বসানো।
🛠 কর্মপদ্ধতি (Step-by-Step Logic)
- যে ইনডেক্সে এলিমেন্ট বসাতে হবে, তার পরের সব এলিমেন্টকে এক ঘর ডানে সরান।
- নির্দিষ্ট ইনডেক্সে নতুন এলিমেন্ট বসান।
📊 কমপ্লেক্সিটি অ্যানালাইসিস (Complexity Analysis)
- Time Complexity: O(n)
- Space Complexity: O(1)
2. ডিলিশন (Deletion)
অ্যারে থেকে কোনো এলিমেন্ট রিমুভ করা।
নির্দিষ্ট পজিশন থেকে (At Position)
🛠 কর্মপদ্ধতি (Step-by-Step Logic)
- যে এলিমেন্টটি ডিলেট করবেন সেটি মুছে ফেলুন।
- তার ডান পাশের সব এলিমেন্টকে এক ঘর বামে (বাম ইনডেক্সে) সরিয়ে নিয়ে আসুন।
- অ্যারের সাইজ ১ কমিয়ে দিন।
📊 কমপ্লেক্সিটি অ্যানালাইসিস (Complexity Analysis)
- Worst Case: O(n) - মাঝখান থেকে ডিলেট করলে বাকিগুলো সরাতে হয়।
- Space Complexity: O(1)
Java Implementation
java
public void deleteAtPos(int[] arr, int size, int pos) {
for (int i = pos; i < size - 1; i++) {
arr[i] = arr[i + 1];
}
}Python Implementation
python
def delete_at_pos(arr, pos):
if 0 <= pos < len(arr):
arr.pop(pos)3. রিভার্সিং (Reversing Array)
অ্যারের এলিমেন্টগুলোকে উল্টো করে সাজানো।
🛠 কর্মপদ্ধতি (Step-by-Step Logic)
- দুটি পয়েন্টার নিন:
start(শুরুতে) এবংend(শেষে)। startএবংendএর ভ্যালু অদলবদল (Swap) করুন।startএক ঘর বাড়ান এবংendএক ঘর কমান।start < endযতক্ষণ থাকবে, ততক্ষণ এটি চালিয়ে যান।
📊 কমপ্লেক্সিটি অ্যানালাইসিস (Complexity Analysis)
- Time Complexity: O(n) - পুরো অ্যারেকে একবার প্রসেস করতে হয়।
- Space Complexity: O(1)
Java Implementation
java
public void reverse(int[] arr) {
int start = 0, end = arr.length - 1;
while (start < end) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}Python Implementation
python
def reverse_array(arr):
arr.reverse() # or arr[::-1]অপারেশন টাইম কমপ্লেক্সিটি সামারি
| Operation | Best Case | Worst Case | Space |
|---|---|---|---|
| Access | O(1) | O(1) | O(1) |
| Search (Linear) | O(1) | O(n) | O(1) |
| Insertion | O(1) [End] | O(n) | O(1) |
| Deletion | O(1) [End] | O(n) | O(1) |
CAUTION
অ্যারের সাইজ যদি বড় হয়, তবে ইনসার্শন বা ডিলিশন অনেক ধীর গতির হতে পারে। এই সমস্যা সমাধানের জন্য আমরা পরবর্তীতে Linked List শিখব।