Array
Array (massiv) data strukturu, eyni tipdən olan elementlərin ardıcıl yaddaş bölgəsində saxlanıldığı ən əsas və geniş istifadə olunan data strukturudur. Array-lər, elementlərə birbaşa indeks vasitəsilə çatmağa imkan verir və bu səbəbdən də random access əməliyyatları üçün çox effektivdir.
Array-in Əsas Xüsusiyyətləri
- Fixed Size: Java-da array-lər yaradıldıqdan sonra ölçüsü dəyişmir
- Homogeneous Elements: Eyni tipdən olan elementləri saxlayır
- Contiguous Memory: Elementlər yaddaşda ardıcıl yerləşir
- Random Access: O(1) vaxt mürəkkəbliyi ilə istənilən elementə çatmaq mümkündür
- Index-Based: Elementlərə indeks vasitəsilə müraciət olunur (0-dan başlayaraq)
Array-in Növləri
1. One-Dimensional Array (Bir Ölçülü Massiv)
Bir ölçülü array, elementlərin bir sırada düzüldüyü ən sadə array növüdür.
Koda bax
// Bir ölçülü array yaratmaq
int[] numbers = new int[5]; // 5 elementli int array
int[] initializedArray = {1, 2, 3, 4, 5}; // İlkin dəyərlərlə yaradılmış array
2. Multi-Dimensional Array (Çox Ölçülü Massiv)
Çox ölçülü array-lər, array-lərin array-i kimi düşünülə bilər. İki ölçülü array matris kimi təsəvvür edilə bilər.
Koda bax
// İki ölçülü array yaratmaq
int[][] matrix = new int[3][4]; // 3x4 ölçülü matris
int[][] initializedMatrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; // İlkin dəyərlərlə
Dynamic Array (ArrayList) İmplementasiyası
Java-da standart array-lər fixed-size olduğu üçün, dinamik ölçülü array-lər üçün ArrayList class-ı istifadə olunur:
Koda bax
import java.util.ArrayList;
import java.util.List;
public class ArrayListExample {
public static void main(String[] args) {
// ArrayList yaratmaq və elementləri əlavə etmək
List<Integer> list = new ArrayList<>();
list.add(10);
list.add(20);
list.add(30);
// Əsas əməliyyatlar
int element = list.get(1); // elementi əldə etmək
list.set(1, 25); // elementi dəyişdirmək
list.add(2, 35); // müəyyən indeksə əlavə etmək
list.remove(0); // elementi silmək
// Yardımçı metodlar
int size = list.size(); // ölçü
boolean contains = list.contains(25); // axtarmaq
int index = list.indexOf(25); // indeksi tapmaq
list.clear(); // təmizləmək
}
}
Array vs. LinkedList
| Aspekt | Array | LinkedList |
|---|---|---|
| Yaddaş Yerləşməsi | Contiguous | Non-contiguous |
| Ölçü | Fixed (ArrayList dinamik) | Dinamik |
| Element Əlavə Etmək | O(n) - ortalama | O(1) - əvvələ və sona |
| Element Silmək | O(n) - ortalama | O(1) - əvvəldən və sondan |
| Random Access | O(1) | O(n) |
| Yaddaş İstifadəsi | Yalnız data | Data + pointer(s) |
| İmplementasiya | Daha sadə | Nisbətən mürəkkəb |
Array-in İstifadə Sahələri
- Sorting Algorithms: Sıralama alqoritmləri
- Searching Algorithms: Axtarış alqoritmləri
- Matrix Operations: Matris əməliyyatları
- Dynamic Programming: Dinamik proqramlaşdırma
- Hash Tables: Hash cədvəlləri
- Buffer for I/O Operations: Giriş/çıxış əməliyyatları üçün bufer
Array-in Mürəkkəbliyi
| Əməliyyat | Time Complexity |
|---|---|
| Access | O(1) |
| Search | O(n) |
| Insert | O(n) |
| Delete | O(n) |
Bəzi Leetcode sualları
- https://leetcode.com/problems/median-of-two-sorted-arrays/description/
- https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/description/
- https://leetcode.com/problems/find-first-and-last-position-of-element-in-sorted-array/description/
- https://leetcode.com/problems/search-in-rotated-sorted-array/description/
- https://leetcode.com/problems/combination-sum/description/