Skip to content

8. Array Operations

অ্যারের ওপর বিভিন্ন ধরণের অপারেশন চালানো হয়। এই অপারেশনগুলোর লজিক এবং কমপ্লেক্সিটি বোঝা অত্যন্ত জরুরি। সব উদাহরণ এখানে Java এবং Python এ দেওয়া হলো।


1. ইনসার্শন (Insertion)

অ্যারেতে নতুন এলিমেন্ট যোগ করা।

শুরুতে যোগ করা (At Beginning)

অ্যারের একদম শুরুতে নতুন এলিমেন্ট বসানো।

🛠 কর্মপদ্ধতি (Step-by-Step Logic)

  1. অ্যারের সব এলিমেন্টকে এক ঘর করে ডান দিকে (ডান ইনডেক্সে) সরিয়ে ফেলুন।
  2. প্রথম ইনডেক্সটি (Index 0) খালি হলে সেখানে নতুন এলিমেন্টটি বসিয়ে দিন।
  3. অ্যারের সাইজ ১ বৃদ্ধি করুন।

📊 কমপ্লেক্সিটি অ্যানালাইসিস (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)

  1. যে ইনডেক্সে এলিমেন্ট বসাতে হবে, তার পরের সব এলিমেন্টকে এক ঘর ডানে সরান।
  2. নির্দিষ্ট ইনডেক্সে নতুন এলিমেন্ট বসান।

📊 কমপ্লেক্সিটি অ্যানালাইসিস (Complexity Analysis)

  • Time Complexity: O(n)
  • Space Complexity: O(1)

2. ডিলিশন (Deletion)

অ্যারে থেকে কোনো এলিমেন্ট রিমুভ করা।

নির্দিষ্ট পজিশন থেকে (At Position)

🛠 কর্মপদ্ধতি (Step-by-Step Logic)

  1. যে এলিমেন্টটি ডিলেট করবেন সেটি মুছে ফেলুন।
  2. তার ডান পাশের সব এলিমেন্টকে এক ঘর বামে (বাম ইনডেক্সে) সরিয়ে নিয়ে আসুন।
  3. অ্যারের সাইজ ১ কমিয়ে দিন।

📊 কমপ্লেক্সিটি অ্যানালাইসিস (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)

  1. দুটি পয়েন্টার নিন: start (শুরুতে) এবং end (শেষে)।
  2. start এবং end এর ভ্যালু অদলবদল (Swap) করুন।
  3. start এক ঘর বাড়ান এবং end এক ঘর কমান।
  4. 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]

অপারেশন টাইম কমপ্লেক্সিটি সামারি

OperationBest CaseWorst CaseSpace
AccessO(1)O(1)O(1)
Search (Linear)O(1)O(n)O(1)
InsertionO(1) [End]O(n)O(1)
DeletionO(1) [End]O(n)O(1)

CAUTION

অ্যারের সাইজ যদি বড় হয়, তবে ইনসার্শন বা ডিলিশন অনেক ধীর গতির হতে পারে। এই সমস্যা সমাধানের জন্য আমরা পরবর্তীতে Linked List শিখব।

Released under the MIT License.