Array Traversal और Operations
In this page:
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;
}
Login to try C/C++/Java code in the editor
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;
}
Login to try C/C++/Java code in the editor
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;
}
Login to try C/C++/Java code in the editor
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;
}
Login to try C/C++/Java code in the editor
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;
}
Login to try C/C++/Java code in the editor
i < nके बजायi <= nसे loop करना, जो आखिर से एक element आगे पढ़ता है।- पहले बाद वाले elements shift किए बिना array के बीच में insert करना, इसलिए एक value overwrite हो जाती है।
- Insert करते समय elements को गलत direction में shift करना (front से), जो following slots पर वही value copy कर देता है।
Chapter Quiz — Complete all 8 topics to unlock
0/8 topics done
Complete these topics first: