Əsas məzmuna keçin

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

AspektArrayLinkedList
Yaddaş YerləşməsiContiguousNon-contiguous
ÖlçüFixed (ArrayList dinamik)Dinamik
Element Əlavə EtməkO(n) - ortalamaO(1) - əvvələ və sona
Element SilməkO(n) - ortalamaO(1) - əvvəldən və sondan
Random AccessO(1)O(n)
Yaddaş İstifadəsiYalnız dataData + pointer(s)
İmplementasiyaDaha sadəNisbətən mürəkkəb

Array-in İstifadə Sahələri

  1. Sorting Algorithms: Sıralama alqoritmləri
  2. Searching Algorithms: Axtarış alqoritmləri
  3. Matrix Operations: Matris əməliyyatları
  4. Dynamic Programming: Dinamik proqramlaşdırma
  5. Hash Tables: Hash cədvəlləri
  6. Buffer for I/O Operations: Giriş/çıxış əməliyyatları üçün bufer

Array-in Mürəkkəbliyi

ƏməliyyatTime Complexity
AccessO(1)
SearchO(n)
InsertO(n)
DeleteO(n)

Bəzi Leetcode sualları