← Back to DSA Course | Chapter 2: Arrays | Lesson 2 of 8

Array Traversal और Operations

किसी array को traverse करना lockers की एक row में चलने और हर एक में बिल्कुल एक बार झांकने जैसा है। दूसरे actions में इसके अंदर क्या है इसे जोड़ना, हटाना और बदलना शामिल है।
Syntax
markup
for i in range(len(array)):        # traversal
    process(array[i])

for i in range(len(array)):        # linear search
    if array[i] == target:
        return i
return -1

Traversal

Traversal का मतलब है किसी array के हर element को बिल्कुल एक बार visit करना, लगभग हमेशा एक for loop के साथ जो index 0 से size−1 तक चलता है। यह वह foundation है जिस पर लगभग हर दूसरा array operation बना है।

उदाहरण: Traversal

#include <iostream>
using namespace std;
int main() {
    int arr[] = {3, 6, 9, 12};
    for (int i = 0; i < 4; i++) cout << arr[i] << " "; // visit each element once
    cout << endl;
    return 0;
}
public class Main {
    public static void main(String[] args) {
        int[] arr = {3, 6, 9, 12};
        for (int i = 0; i < arr.length; i++) System.out.print(arr[i] + " ");
        System.out.println();
    }
}
arr = [3, 6, 9, 12]
for x in arr:
    print(x, end=" ")
print()
#include <stdio.h>
int main() {
    int arr[] = {3, 6, 9, 12};
    for (int i = 0; i < 4; i++) printf("%d ", arr[i]);
    printf("\n");
    return 0;
}

Searching

Linear search array को traverse करता है और हर element को एक target value से compare करता है, match मिलने पर जल्दी रुकते हुए। यह simple है और unsorted data पर काम करता है, हालांकि worst case में इसे O(n) समय लगता है क्योंकि इसे शायद हर element जांचना पड़े।

उदाहरण: Searching

#include <iostream>
using namespace std;
int main() {
    int arr[] = {9, 4, 7, 2, 5};
    int target = 7, foundAt = -1;
    for (int i = 0; i < 5; i++) {
        if (arr[i] == target) { foundAt = i; break; } // stop early on match
    }
    cout << "Found at index: " << foundAt << endl;
    return 0;
}
public class Main {
    public static void main(String[] args) {
        int[] arr = {9, 4, 7, 2, 5};
        int target = 7, foundAt = -1;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == target) { foundAt = i; break; }
        }
        System.out.println("Found at index: " + foundAt);
    }
}
arr = [9, 4, 7, 2, 5]
target = 7
found_at = arr.index(target) if target in arr else -1
print("Found at index:", found_at)
#include <stdio.h>
int main() {
    int arr[] = {9, 4, 7, 2, 5};
    int target = 7, foundAt = -1;
    for (int i = 0; i < 5; i++) {
        if (arr[i] == target) { foundAt = i; break; }
    }
    printf("Found at index: %d\n", foundAt);
    return 0;
}

Insertion and Deletion

चूंकि एक fixed-size array elements को contiguously store करता है, बीच में insert या delete करने का मतलब है उस position के बाद हर element को physically एक slot आगे shift करना, जो एक O(n) operation है, एक linked list के विपरीत जहां सही node पर होने के बाद वही change O(1) है।

उदाहरण: Insertion and Deletion

#include <iostream>
using namespace std;
int main() {
    int arr[6] = {1, 2, 4, 5, 0, 0};
    int n = 4;
    // Insert 3 at index 2: shift everything after it right by one.
    for (int i = n; i > 2; i--) arr[i] = arr[i - 1];
    arr[2] = 3;
    n++;
    for (int i = 0; i < n; i++) cout << arr[i] << " ";
    cout << endl;
    return 0;
}
public class Main {
    public static void main(String[] args) {
        int[] arr = {1, 2, 4, 5, 0, 0};
        int n = 4;
        for (int i = n; i > 2; i--) arr[i] = arr[i - 1];
        arr[2] = 3;
        n++;
        for (int i = 0; i < n; i++) System.out.print(arr[i] + " ");
        System.out.println();
    }
}
arr = [1, 2, 4, 5]
arr.insert(2, 3)  # shifting every later element right by one, O(n)
print(*arr)
#include <stdio.h>
int main() {
    int arr[6] = {1, 2, 4, 5, 0, 0};
    int n = 4;
    for (int i = n; i > 2; i--) arr[i] = arr[i - 1];
    arr[2] = 3;
    n++;
    for (int i = 0; i < n; i++) printf("%d ", arr[i]);
    printf("\n");
    return 0;
}

Counting and Frequency

यह count करना कि एक value कितनी बार दिखती है, या हर distinct value की एक पूरी frequency count बनाना, एक traversal है जो scan करते समय एक running tally रखता है, अक्सर value से indexed एक अलग array या hash map उपयोग करते हुए।

उदाहरण: Counting and Frequency

#include <iostream>
using namespace std;
int main() {
    int arr[] = {1, 2, 2, 3, 2, 1};
    int target = 2, count = 0;
    for (int i = 0; i < 6; i++)
        if (arr[i] == target) count++;
    cout << "Count of " << target << ": " << count << endl;
    return 0;
}
public class Main {
    public static void main(String[] args) {
        int[] arr = {1, 2, 2, 3, 2, 1};
        int target = 2, count = 0;
        for (int x : arr) if (x == target) count++;
        System.out.println("Count of " + target + ": " + count);
    }
}
arr = [1, 2, 2, 3, 2, 1]
target = 2
count = arr.count(target)
print(f"Count of {target}:", count)
#include <stdio.h>
int main() {
    int arr[] = {1, 2, 2, 3, 2, 1};
    int target = 2, count = 0;
    for (int i = 0; i < 6; i++)
        if (arr[i] == target) count++;
    printf("Count of %d: %d\n", target, count);
    return 0;
}

Useful Array Operations

Arrays पर sum, average, और reversal practice करना index arithmetic और loop boundaries के लिए असली intuition बनाता है। ये simple operations two-pointer और sliding-window algorithms जैसी ज़्यादा advanced array techniques के लिए building blocks भी हैं।

उदाहरण: Useful Array Operations

#include <iostream>
using namespace std;
int main() {
    int arr[] = {4, 8, 15, 16, 23};
    int n = 5, sum = 0;
    for (int i = 0; i < n; i++) sum += arr[i];
    double avg = (double)sum / n;
    for (int i = 0; i < n / 2; i++) swap(arr[i], arr[n - 1 - i]); // reversal
    cout << "Sum: " << sum << ", Avg: " << avg << ", arr[0] after reverse: " << arr[0] << endl;
    return 0;
}
public class Main {
    public static void main(String[] args) {
        int[] arr = {4, 8, 15, 16, 23};
        int n = arr.length, sum = 0;
        for (int x : arr) sum += x;
        double avg = (double) sum / n;
        for (int i = 0; i < n / 2; i++) {
            int tmp = arr[i]; arr[i] = arr[n - 1 - i]; arr[n - 1 - i] = tmp;
        }
        System.out.println("Sum: " + sum + ", Avg: " + avg + ", arr[0] after reverse: " + arr[0]);
    }
}
arr = [4, 8, 15, 16, 23]
total = sum(arr)
avg = total / len(arr)
arr.reverse()
print("Sum:", total, ", Avg:", avg, ", arr[0] after reverse:", arr[0])
#include <stdio.h>
int main() {
    int arr[] = {4, 8, 15, 16, 23};
    int n = 5, sum = 0;
    for (int i = 0; i < n; i++) sum += arr[i];
    double avg = (double)sum / n;
    for (int i = 0; i < n / 2; i++) {
        int tmp = arr[i]; arr[i] = arr[n - 1 - i]; arr[n - 1 - i] = tmp;
    }
    printf("Sum: %d, Avg: %.1f, arr[0] after reverse: %d\n", sum, avg, arr[0]);
    return 0;
}
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. i < n के बजाय i <= n से loop करना, जो आखिर से एक element आगे पढ़ता है।
  2. पहले बाद वाले elements shift किए बिना array के बीच में insert करना, इसलिए एक value overwrite हो जाती है।
  3. Insert करते समय elements को गलत direction में shift करना (front से), जो following slots पर वही value copy कर देता है।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.