Diziler

Diziler · Çalışma Soruları
Dizi oluşturma ve indeksSınır dışı hatasıDöngülerle dolaşmaToplam, ortalama, min/maxFiltreleme ve ortancaArama ve sıralamaİki boyutlu diziler
Her slaytta bir soru · çoktan seçmeli, çıktı ve adım adım çalıştırma soruları. Önce kendiniz çözün, sonra cevabı açın. · Sercan KÜLCÜ

Çoktan Seçmeli · Temeller

Soru 1: Uzunluk ve Son İndeks

int[] a = new int[6]; ile oluşturulan dizi için hangisi doğrudur?

a001020304050ilkson

C: Uzunluk 6, indeksler 0 … length − 1 = 5. a[6] sınır dışıdır. Dizide length bir alandır, parantezsiz yazılır; length() String'in metodudur.

Çıktı Sorusu · Temeller

Soru 2: Varsayılan Değerler

Aşağıdaki kodun çıktısı nedir?

int[] a = new int[3];
double[] d = new double[2];
boolean[] b = new boolean[2];
String[] s = new String[2];
System.out.println(a[1] + " " + d[0] + " " + b[1] + " " + s[0]);
System.out.println(a.length + d.length + s.length);
Cevabı göster

Çıktı:

0 0.0 false null
7
  • new ile oluşturulan dizinin hücreleri türün varsayılan değerini alır.
  • İkinci satırda üç int toplanır: 3 + 2 + 2 = 7 (önce String yok, toplama yapılır).
0int0.0doublefalsebooleannullString

Çoktan Seçmeli · Geçmiş Sınav (2023-24 Final)

Soru 3: i = 1'den Başlayan Döngü

Aşağıdaki kod parçasının çıktısı hangi şıkta doğru verilmiştir?

int[] sayilar = {12, 20, 16};
for (int i = 1; i < sayilar.length; i++) {
    System.out.print(sayilar[i] + " ");
}

D: Döngü i = 1'den başladığı için sayilar[0] = 12 atlanır; i = 1 → 20, i = 2 → 16, i = 3 < 3 yanlış → biter.

sayilar012120216

Çıktı Sorusu · Geçmiş Sınav (2025-26 Bütünleme ve Final)

Soru 4: Elemanları Ayırıcıyla Yazdırma

Aşağıdaki kodun çıktısı nedir?

int[] a = {2, 4, 5, 7, 8};
for (int i = 0; i < a.length; i++) {
    System.out.print(a[i] + ".");
}
System.out.println();
int[] b = {2, 4, 6, 8};
for (int i = 0; i < b.length; i++) {
    System.out.print(b[i] + " ");
}
Cevabı göster

Çıktı:

2.4.5.7.8.
2 4 6 8 
  • a[i] + ".": sayı + String → String birleştirme; her elemandan sonra nokta gelir, sonda da bir nokta kalır.
  • print satır atlamaz; println() ikinci diziyi alt satıra geçirir.
a02.14.25.37.48.

Çoktan Seçmeli · Geçmiş Sınav (2023-24 Final)

Soru 5: i <= dizi.length

Aşağıdaki kod parçasının çıktısı hangi şıkta doğru verilmiştir?

int dizi[] = {1, 2, 3, 4, 5};
for (int i = 0; i <= dizi.length; ++i)
    System.out.print(dizi[i] + " ");

D: Koşul <= olduğu için son turda i = 5 olur; dizi[5] yoktur → ArrayIndexOutOfBoundsException. Hata oluşmadan önce 1 2 3 4 5 yazılmıştır, ama program hatayla biter. Doğrusu i < dizi.length.

01122334455?i = 5

Çıktı Sorusu · Erişim

Soru 6: Okuma ve Yazma

Aşağıdaki kodun çıktısı nedir?

int[] p = {70, 85, 90};
p[1] = p[0] + p[2];
p[2]--;
int son = p[p.length - 1];
System.out.println(p[1] + " " + son);
System.out.println(p[0] + p[1]);
Cevabı göster

Çıktı:

160 89
230
  • p[1] = 70 + 90 = 160: atamanın solundaki p[1] hücrenin kendisidir.
  • p[2]-- → 89; p[p.length - 1] = p[2] = 89.
  • Son satırda iki int toplanır: 70 + 160 = 230.
p0701160289

Adım Adım Çalıştırma · Geçmiş Sınav (2023-24 Final)

Soru 7: dizi[i] = dizi[dizi[i]]

Kodun çıktısı nedir? (Sınavdaki şıklar: A) [0, 2, 3, 1] B) [0, 3, 1, 3] C) [2, 3, 2, 3] D) [0, 1, 2, 3])

Önce kendiniz tahmin edin, sonra › ile ilerleyin.

dizi00122331

Dört elemanlı dizi. Dikkat: değerler aynı zamanda geçerli indekslerdir (0–3).

dizi00122331i

i = 0; 0 < 4 → true.

dizi00122331i

dizi[0] = 0 → dizi[0] = dizi[0] = 0; değişiklik yok.

dizi00122331i

i = 1; 1 < 4 → true.

dizi00132331i

dizi[1] = 2 → dizi[1] = dizi[2] = 3.

dizi00132331i

i = 2; 2 < 4 → true.

dizi00132131i

dizi[2] = 3 → dizi[2] = dizi[3] = 1.

dizi00132131i

i = 3; 3 < 4 → true.

dizi00132133i

dizi[3] = 1 → dizi[3] = dizi[1]. dizi[1] artık 2 değil, i = 1 adımında yazılan 3!

dizi00132133

i = 4; 4 < 4 → false, döngü biter.

Doğru şık B. Değişiklikler aynı dizide yapıldığı için sonraki adımlar güncellenmiş değerleri okur.

int[] dizi = {0, 2, 3, 1};
for (int i = 0; i < dizi.length; i++) {
    dizi[i] = dizi[dizi[i]];
}
System.out.println(Arrays.toString(dizi));

Çıktı Sorusu · Erişim

Soru 8: Başvuru Kopyası ve clone

Aşağıdaki kodun çıktısı nedir?

int[] a = {1, 2, 3};
int[] b = a;
b[0] = 9;
int[] c = a.clone();
c[1] = 50;
a[2] = 7;
System.out.println(a[0] + " " + b[2] + " " + c[1] + " " + c[2]);
Cevabı göster

Çıktı: 9 7 50 3

  • b = a yeni dizi oluşturmaz: a ve b aynı nesneyi gösterir, b[0] = 9 a'yı da değiştirir.
  • a.clone() o anki içerikle ({9, 2, 3}) ayrı bir dizi oluşturur; c'deki ve a'daki sonraki değişiklikler birbirini etkilemez.
abc9279503

Çoktan Seçmeli · Erişim

Soru 9: copyOf ve copyOfRange

Aşağıdaki kodun çıktısı nedir?

int[] p = {1, 2, 3};
int[] q = Arrays.copyOf(p, 5);
int[] r = Arrays.copyOfRange(q, 1, 4);
System.out.println(Arrays.toString(r));
System.out.println(p == q);

A: copyOf(p, 5) uzunluk büyük olduğu için sıfırla doldurur: [1, 2, 3, 0, 0]. copyOfRange(q, 1, 4) 1, 2, 3 indekslerini alır (4 hariç): [2, 3, 0]. q yeni bir dizi olduğundan p == q false'tur.

q0112233040

Çoktan Seçmeli · Döngüler

Soru 10: Gelişmiş for ile Atama

Aşağıdaki kodun çıktısı nedir?

int[] a = {3, 5, 7};
for (int x : a) {
    x = x * 2;
}
System.out.println(Arrays.toString(a));

B: Gelişmiş for'da x, hücrenin kopyasıdır; x'e atama diziyi değiştirmez. Diziyi değiştirmek için indeksli for gerekir: a[i] = a[i] * 2;

Çıktı Sorusu · Döngüler

Soru 11: Tersten ve İkişer Atlayarak

Aşağıdaki kodun çıktısı nedir?

int[] a = {3, 6, 9, 12, 15, 18};
for (int i = a.length - 1; i >= 0; i -= 2) {
    System.out.print(a[i] + " ");
}
Cevabı göster

Çıktı: 18 12 6

  • i = length − 1 = 5'ten başlar, her turda 2 azalır: 5, 3, 1.
  • Sonraki değer −1 → -1 >= 0 yanlış, döngü biter (sınır dışına çıkılmaz).
a0316293124155183.2.1.

Çıktı Sorusu · Geçmiş Sınav (2024-25 Bütünleme A)

Soru 12: Büyük ve Çift Olanlar

Aşağıdaki kod çalıştırıldığında çıktı ne olur?

int[] sayilar = {12, 7, 3, 21, 1, 5, 8, 9, 20, 13, 12, 14, 16};
for (int i = 0; i < sayilar.length; i++) {
    if (sayilar[i] > 10 && sayilar[i] % 2 == 0) {
        System.out.print(sayilar[i] + " ");
    }
}
Cevabı göster

Çıktı: 12 20 12 14 16

  • İki koşul da (&&) sağlanmalı: 10'dan büyük ve çift.
  • 21 ve 13 büyük ama tek; 8 çift ama 10'dan küçük → yazılmaz. 12 iki kez geçtiği için iki kez yazılır.
012172332141556879820913101211141216

Çoktan Seçmeli · Geçmiş Sınav (2024-25 Bütünleme B)

Soru 13: Büyük ve 3'e Bölünenler

Koşul sayilar[i] > 10 && sayilar[i] % 3 == 0 olursa çıktı ne olur?

int[] sayilar = {12, 7, 3, 21, 1, 5, 8, 9, 20, 13, 12, 14, 16};
for (int i = 0; i < sayilar.length; i++) {
    if (sayilar[i] > 10 && sayilar[i] % 3 == 0) {
        System.out.print(sayilar[i] + " ");
    }
}

C: 10'dan büyük olanlar: 12, 21, 20, 13, 12, 14, 16. Bunlardan 3'e tam bölünenler 12, 21, 12. 3 ve 9 da 3'e bölünür ama 10'dan büyük değildir.

012172332141556879820913101211141216

Çoktan Seçmeli · Geçmiş Sınav (2024-25 Bütünleme C)

Soru 14: Küçük ve Çift Olanlar

Koşul sayilar[i] < 10 && sayilar[i] % 2 == 0 olursa çıktı ne olur?

int[] sayilar = {12, 7, 3, 21, 1, 5, 8, 9, 20, 13, 12, 14, 16};
for (int i = 0; i < sayilar.length; i++) {
    if (sayilar[i] < 10 && sayilar[i] % 2 == 0) {
        System.out.print(sayilar[i] + " ");
    }
}

A: 10'dan küçük olanlar 7, 3, 1, 5, 8, 9; bunların içinde tek çift sayı 8'dir. B şıkkı || (veya) kullanılmış gibi düşünmektir.

012172332141556879820913101211141216

Çıktı Sorusu · Geçmiş Sınav (2024-25 Bütünleme D)

Soru 15: Küçük ve 3'e Bölünenler

Koşul sayilar[i] < 10 && sayilar[i] % 3 == 0 olursa kodun çıktısı nedir?

int[] sayilar = {12, 7, 3, 21, 1, 5, 8, 9, 20, 13, 12, 14, 16};
for (int i = 0; i < sayilar.length; i++) {
    if (sayilar[i] < 10 && sayilar[i] % 3 == 0) {
        System.out.print(sayilar[i] + " ");
    }
}
Cevabı göster

Çıktı: 3 9

  • 10'dan küçükler: 7, 3, 1, 5, 8, 9 → 3'e bölünenler 3 ve 9.
  • Her sayıdan sonra boşluk yazıldığı için çıktı "3 9 " olur (cevap anahtarında boşluk kaybolup "39" gibi görünür).
  • 12, 21 3'e bölünür ama 10'dan küçük değildir.
012172332141556879820913101211141216

Adım Adım Çalıştırma · Geçmiş Sınav (2023-24 Final / 2025-26 Bütünleme)

Soru 16: En Küçük Elemanı Bulma

Sınavda yazdırılan bulMinimum metodu bu diziyle çağrılıyor. Değişkenleri adım adım izleyin.

Önce kendiniz tahmin edin, sonra › ile ilerleyin.

main, yeni diziyi metoda gönderir.

dizi0713293144

İlk eleman aday olur (0 ile başlatmak pozitif dizide yanlış sonuç verirdi).

dizi0713293144i

i = 1'den başlanır (dizi[0] zaten aday). 3 < 7 → true.

dizi0713293144i

minimum = 3.

dizi0713293144i

9 < 3 → false; minimum değişmez.

dizi0713293144i

1 < 3 → true.

dizi0713293144i

minimum = 1.

dizi0713293144i

4 < 1 → false.

i = 5; 5 < 5 → false, döngü biter.

return 1; çerçeve kapanır.

1 yazdırılır. n elemanlı dizide n − 1 karşılaştırma yapıldı.

static int bulMinimum(int[] dizi) {
    int minimum = dizi[0];
    for (int i = 1; i < dizi.length; i++) {
        if (dizi[i] < minimum) {
            minimum = dizi[i];
        }
    }
    return minimum;
}
// main içinde:
System.out.println(bulMinimum(new int[]{7, 3, 9, 1, 4}));

Çoktan Seçmeli · Geçmiş Sınav (2025-26 Final)

Soru 17: En Büyük: Yanlış Başlangıç

Sınavdaki enBuyukEleman metodunda başlangıç değeri dizi[0] yerine 0 yazılırsa enBuyukEleman(new int[]{-8, -3, -5}) ne döndürür?

static int enBuyukEleman(int[] dizi) {
    int enBuyuk = 0;   // dizi[0] yerine
    for (int i = 0; i < dizi.length; i++)
        if (dizi[i] > enBuyuk)
            enBuyuk = dizi[i];
    return enBuyuk;
}

D: Hiçbir eleman 0'dan büyük olmadığı için koşul hiç sağlanmaz ve dizide olmayan 0 döner. Aday her zaman dizinin bir elemanı (dizi[0]) olmalıdır; o zaman sonuç −3 olurdu.

Çoktan Seçmeli · Geçmiş Sınav (2025-26 Bütünleme / Final)

Soru 18: Ortalamada Tür Dönüşümü

Sınavdaki ortalamaHesapla metodunda (double) dönüşümü unutulursa ortalamaHesapla(new int[]{4, 7, 2, 6}) ne döndürür?

static double ortalamaHesapla(int[] dizi) {
    int toplam = 0;
    for (int i = 0; i < dizi.length; i++)
        toplam += dizi[i];
    double ortalama = toplam / dizi.length;
    return ortalama;
}

B: toplam = 19; 19 / 4 iki int'in bölmesidir → 4 (kesir atılır). Sonra double'a atanınca 4.0 olur. Doğrusu (double) toplam / dizi.length → 4.75.

Çıktı Sorusu · Geçmiş Sınav (2025-26 Final)

Soru 19: Ortalama ve Boş Dizi

Sınavdaki doğru ortalamaHesapla metodu üç farklı diziyle çağrılıyor. Çıktı nedir?

static double ortalamaHesapla(int[] dizi) {
    int toplam = 0;
    for (int i = 0; i < dizi.length; i++)
        toplam += dizi[i];
    return (double) toplam / dizi.length;
}
// main içinde:
System.out.println(ortalamaHesapla(new int[]{4, 7, 2, 6}));
System.out.println(ortalamaHesapla(new int[]{5, 6}));
System.out.println(ortalamaHesapla(new int[0]));
Cevabı göster

Çıktı:

4.75
5.5
NaN
  • 19.0 / 4 = 4.75 ve 11.0 / 2 = 5.5.
  • Boş dizide döngü hiç dönmez, toplam 0 kalır: 0.0 / 0 ondalıklı bölmedir, hata vermez, NaN (Not a Number) üretir. (İki int olsaydı 0 / 0 ArithmeticException verirdi.) Önce dizi.length > 0 kontrolü yapılmalıdır.

Çoktan Seçmeli · Geçmiş Sınav (2024-25 Final A)

Soru 20: 10 ile 20 Arasındakiler

10'dan büyük ve 20'den küçük elemanları yazdıran metotta boşluğa hangisi yazılmalıdır?

static void yazdir(int[] dizi) {
    for (int i = 0; i < dizi.length; i++) {
        if ( ______ ) {
            System.out.println(dizi[i]);
        }
    }
}

D: İki koşul birlikte sağlanmalı: &&. A her sayı için true olur (her sayı ya 10'dan büyük ya 20'den küçüktür). B derlenmez: 10 < dizi[i] boolean üretir, boolean 20 ile karşılaştırılamaz. C 10 ve 20'yi de yazar.

Çıktı Sorusu · Geçmiş Sınav (2024-25 Final B)

Soru 21: 20 ile 30 Arasındakiler

Sınavdaki yazdir metodu aşağıdaki diziyle çağrılıyor. Çıktı nedir?

static void yazdir(int[] dizi) {
    for (int i = 0; i < dizi.length; i++) {
        if (dizi[i] > 20 && dizi[i] < 30) {
            System.out.println(dizi[i]);
        }
    }
}
// main içinde:
yazdir(new int[]{20, 25, 31, 29, 30, 21});
Cevabı göster

Çıktı (her biri ayrı satırda):

25
29
21
  • Sınırlar dahil değil: 20 ve 30 yazılmaz (> ve <).
  • Elemanlar dizideki sırayla yazılır; sıralanmaz.
020125231329430521

Adım Adım Çalıştırma · Geçmiş Sınav (2024-25 Final A)

Soru 22: % 2 ve % 3 ile Değiştirme

Aşağıdaki kod çalıştırıldığında çıktı ne olur? Her elemanın hangi dala girdiğini izleyin.

Önce kendiniz tahmin edin, sonra › ile ilerleyin.

020115216364105196127583913

On elemanlı dizi. Her eleman için önce çift mi, değilse 3'e bölünüyor mu bakılacak.

040115216364105196127583913i=0

20 % 2 == 0 → çift: 20 × 2 = 40.

040145216364105196127583913i=1

15 tek, 15 % 3 == 0 → 15 × 3 = 45.

040145232364105196127583913i=2

16 % 2 == 0 → çift: 16 × 2 = 32.

0401452323124105196127583913i=3

6 % 2 == 0 → çift: 6 × 2 = 12. (3'e de bölünür ama else if'e hiç bakılmaz.)

0401452323124205196127583913i=4

10 % 2 == 0 → çift: 10 × 2 = 20.

0401452323124205196127583913i=5

19 ne çift ne 3'e bölünüyor → değişmez.

0401452323124205196247583913i=6

12 % 2 == 0 → çift: 12 × 2 = 24. (3'e de bölünür ama else if'e hiç bakılmaz.)

0401452323124205196247583913i=7

5 ne çift ne 3'e bölünüyor → değişmez.

0401452323124205196247589913i=8

3 tek, 3 % 3 == 0 → 3 × 3 = 9.

0401452323124205196247589913i=9

13 ne çift ne 3'e bölünüyor → değişmez.

İkinci döngü diziyi yazdırır.

int[] dizi = {20, 15, 16, 6, 10, 19, 12, 5, 3, 13};
for (int i = 0; i < dizi.length; i++) {
    if (dizi[i] % 2 == 0) {
        dizi[i] *= 2;
    }
    else if (dizi[i] % 3 == 0) {
        dizi[i] *= 3;
    }
}
for (int i = 0; i < dizi.length; i++)
    System.out.print(dizi[i] + " ");

Çıktı Sorusu · Geçmiş Sınav (2024-25 Final B)

Soru 23: Dalların Yeri Değişince

Bu kez çift sayılar 3 ile, 3'e bölünen tek sayılar 2 ile çarpılıyor. Çıktı nedir?

int[] dizi = {20, 15, 16, 6, 10, 19, 12, 5, 3, 13};
for (int i = 0; i < dizi.length; i++) {
    if (dizi[i] % 2 == 0) {
        dizi[i] *= 3;
    }
    else if (dizi[i] % 3 == 0) {
        dizi[i] *= 2;
    }
}
for (int i = 0; i < dizi.length; i++)
    System.out.print(dizi[i] + " ");
Cevabı göster

Çıktı: 60 30 48 18 30 19 36 5 6 13

  • Çiftler × 3: 20→60, 16→48, 6→18, 10→30, 12→36.
  • 3'e bölünen tekler × 2: 15→30, 3→6.
  • 6 ve 12 hem çift hem 3'e bölünür ama else if yalnızca ilk koşul yanlışsa denenir → bir kez çarpılırlar.
  • 19, 5, 13 değişmez.

Çıktı Sorusu · Geçmiş Sınav (2024-25 Final A/B)

Soru 24: Ortanca Eleman

Sınavdaki ortancaElemanBul metodunun çıktısı nedir?

static double ortancaElemanBul(int[] dizi) {
    Arrays.sort(dizi);
    if (dizi.length % 2 == 0) {
        int orta1 = dizi[dizi.length / 2 - 1];
        int orta2 = dizi[dizi.length / 2];
        return (orta1 + orta2) / 2.0;
    }
    return dizi[dizi.length / 2];
}
// main içinde:
System.out.println(ortancaElemanBul(new int[]{9, 2, 7, 4}));
System.out.println(ortancaElemanBul(new int[]{8, 1, 6, 3, 5}));
Cevabı göster

Çıktı:

5.5
5.0
  • Çift uzunluk (4): sıralı {2, 4, 7, 9}; ortadaki iki eleman indeks 1 ve 2 → (4 + 7) / 2.0 = 5.5.
  • Tek uzunluk (5): sıralı {1, 3, 5, 6, 8}; indeks 5 / 2 = 2 → 5; dönüş türü double → 5.0.
çift uzunluk02142739
tek uzunluk0113253648

Çoktan Seçmeli · Geçmiş Sınav (2024-25 Final)

Soru 25: Ortancanın Yan Etkisi

Önceki sorudaki ortancaElemanBul metoduyla aşağıdaki kodun çıktısı nedir?

int[] a = {9, 2, 7, 4};
double m = ortancaElemanBul(a);
System.out.println(Arrays.toString(a) + " " + m);

C: Metoda dizinin başvurusu gider; Arrays.sort(dizi) main'deki a dizisini de sıralar. Özgün sıra korunmak isteniyorsa metot içinde dizi.clone() sıralanmalıdır.

Çoktan Seçmeli · Geçmiş Sınav (2024-25 Final)

Soru 26: Ortancada / 2 ile / 2.0

Metotta (orta1 + orta2) / 2.0 yerine (orta1 + orta2) / 2 yazılırsa ortancaElemanBul(new int[]{9, 1, 4, 3}) ne döndürür?

sıralandıktan sonra01132439

D: Sıralı dizi {1, 3, 4, 9}; (3 + 4) / 2 tam sayı bölmesidir → 3. Dönüş türü double olduğu için 3.0 döner. 2.0 ile doğru sonuç 3.5 olurdu.

Çoktan Seçmeli · Geçmiş Sınav (2024-25 Final A/B)

Soru 27: Rastgele Doldurma

Sınavdaki metot int[] d = diziOlusturVeDoldur(5); ile çağrılıyor. Hangisi her çalıştırmada kesinlikle doğrudur?

static int[] diziOlusturVeDoldur(int elemanSayisi) {
    int[] dizi = new int[elemanSayisi];
    Random rastgele = new Random();
    for (int i = 0; i < dizi.length; i++) {
        dizi[i] = rastgele.nextInt(100);
    }
    return dizi;
}

B: nextInt(100) 0 dahil, 100 hariç bir tam sayı üretir (0–99). Aynı sayı tekrar gelebilir, sıra rastgeledir. Metot yeni dizinin başvurusunu döndürür. java.util.Random için import gerekir.

Çoktan Seçmeli · İşlemler

Soru 28: Tüm Dizide Takas

Diziyi ters çevirmek isteyen bu kodun çıktısı nedir?

int[] a = {1, 2, 3, 4};
for (int i = 0; i < a.length; i++) {
    int t = a[i];
    a[i] = a[a.length - 1 - i];
    a[a.length - 1 - i] = t;
}
System.out.println(Arrays.toString(a));

A: Döngü tüm diziyi gezdiği için her çift iki kez takas edilir: i = 0, 1 diziyi ters çevirir, i = 2, 3 geri çevirir. Döngü yalnızca ortaya kadar (i < a.length / 2) dönmelidir.

01122334i=0,3i=1,2

Adım Adım Çalıştırma · İşlemler

Soru 29: Bir Konum Sağa Döndürme

Dizi, ek dizi kullanmadan bir konum sağa döndürülüyor (son eleman başa). Adım adım izleyin.

Önce kendiniz tahmin edin, sonra › ile ilerleyin.

a01122334

Başlangıç dizisi.

a01122334

Son eleman kaybolmasın diye saklanır.

a01122334i

Sağdan sola gidilir: i = 3; 3 > 0 → true.

a01122333i

a[3] = a[2] = 3.

a01122233i

i = 2: a[2] = a[1] = 2.

a01112233i

i = 1: a[1] = a[0] = 1.

i = 0; 0 > 0 → false, döngü biter.

a04112233

Saklanan değer başa yazılır.

Soldan sağa kaydırsaydık (i artarak) hep a[0] kopyalanırdı: [1, 1, 1, 1].

int[] a = {1, 2, 3, 4};
int son = a[a.length - 1];
for (int i = a.length - 1; i > 0; i--) {
    a[i] = a[i - 1];
}
a[0] = son;
System.out.println(Arrays.toString(a));

Çoktan Seçmeli · Arama ve Sıralama

Soru 30: Doğrusal Arama: Bulunamayan

Dersteki ara metodu için ara(d, 5) ne döndürür ve dizi[i] == hedef karşılaştırması kaç kez yapılır?

static int ara(int[] dizi, int hedef) {
    for (int i = 0; i < dizi.length; i++)
        if (dizi[i] == hedef) return i;
    return -1;
}
// main içinde:
int[] d = {8, 3, 6, 2};
System.out.println(ara(d, 5));

C: 5 dizide yoktur; dört elemanın hepsine bakılır (n karşılaştırma), döngü bitince return -1 çalışır. En kötü durum O(n).

Adım Adım Çalıştırma · Arama ve Sıralama

Soru 31: İkili Arama: hedef = 11

Sıralı dizide 11 aranıyor. lo, hi ve mid değerlerini adım adım izleyin.

Önce kendiniz tahmin edin, sonra › ile ilerleyin.

a0318211315420527631lohi

Arama aralığı tüm dizi: lo = 0, hi = 6.

a0318211315420527631lomidhi

0 <= 6 → mid = (0 + 6) / 2 = 3, a[3] = 15.

a0318211315420527631lomidhi

15 == 11 → false; 15 < 11 → false.

a0318211315420527631lohi

else: hi = mid − 1 = 2. Sağ yarı elendi.

a0318211315420527631lomidhi

0 <= 2 → mid = (0 + 2) / 2 = 1, a[1] = 8.

a0318211315420527631lo = hi

8 == 11 → false; 8 < 11 → true: lo = mid + 1 = 2.

a0318211315420527631lo, mid, hi

2 <= 2 → mid = 2, a[2] = 11.

a0318211315420527631bulundu

11 == 11 → sonuc = 2, break.

3 karşılaştırma turunda bulundu (doğrusal arama da 3 elemana bakardı; büyük dizide fark O(log n) ile O(n) arasındadır).

int[] a = {3, 8, 11, 15, 20, 27, 31};
int hedef = 11, lo = 0, hi = a.length - 1;
int sonuc = -1;
while (lo <= hi) {
    int mid = (lo + hi) / 2;
    if (a[mid] == hedef) { sonuc = mid; break; }
    if (a[mid] < hedef) lo = mid + 1;
    else hi = mid - 1;
}
System.out.println(sonuc);

Çoktan Seçmeli · Arama ve Sıralama

Soru 32: binarySearch: Bulunamayan

Arrays.binarySearch(new int[]{2, 4, 6, 8}, 7) ne döndürür?

021426387 buraya girerdi

C: 7 yoktur; sıralı dizide girmesi gereken yer (ekleme noktası) indeks 3'tür (6 ile 8 arası). Dönüş −(ekleme noktası) − 1 = −3 − 1 = −4. Negatif sonuç “yok” demektir.

Çoktan Seçmeli · Arama ve Sıralama

Soru 33: Kabarcık Sıralama: İlk Geçiş

Kabarcık sıralamanın yalnızca ilk geçişi yapılıyor. Çıktı nedir?

int[] a = {5, 1, 4, 2, 3};
for (int j = 0; j < a.length - 1; j++) {
    if (a[j] > a[j + 1]) {
        int t = a[j]; a[j] = a[j + 1]; a[j + 1] = t;
    }
}
System.out.println(Arrays.toString(a));

D: 5 her karşılaştırmada sağdaki küçük elemanla yer değiştirir ve en sona “kabarır”: [1,5,4,2,3] → [1,4,5,2,3] → [1,4,2,5,3] → [1,4,2,3,5]. Tam sıralama için n − 1 geçiş gerekir.

0114223345yerinde

Çıktı Sorusu · Matris

Soru 34: Satır, Sütun ve Hücre

Aşağıdaki kodun çıktısı nedir?

int[][] m = {
    {1, 2, 3},
    {4, 5, 6}
};
System.out.println(m.length + " " + m[0].length);
System.out.println(m[1][2] + m[0][1]);
m[1][0] = m[0][2] * 10;
System.out.println(Arrays.toString(m[1]));
Cevabı göster

Çıktı:

2 3
8
[30, 5, 6]
  • m.length satır sayısı (2), m[0].length ilk satırın sütun sayısı (3).
  • İlk indeks satır, ikinci sütun: m[1][2] = 6, m[0][1] = 2 → 6 + 2 = 8.
  • m[1][0] = 3 × 10 = 30; m[1] bir satır dizisidir.
m012012313056

Adım Adım Çalıştırma · Matris

Soru 35: Satır Toplamları

İç içe döngüler her satırın toplamını yazdırıyor. Çıktı nedir?

Önce kendiniz tahmin edin, sonra › ile ilerleyin.

m01201231456

2 satır, 3 sütun.

m01201231456

i = 0 satırı; toplam her satır başında sıfırlanır.

m012012311456

toplam += m[0][0] → 1.

m012012331456

toplam += m[0][1] → 3.

m012012361456

toplam += m[0][2] → 6. Sonra j = 3 < 3 → false.

m012012361456

Satır toplamı yazılır.

m012012361456

i = 1 satırı; toplam yeniden 0.

m0120123614564

toplam += m[1][0] → 4.

m0120123614569

toplam += m[1][1] → 9.

m01201236145615

toplam += m[1][2] → 15.

İkinci satırın toplamı yazılır.

i = 2; 2 < 2 → false. toplam = 0 satırı dış döngünün içinde olmasaydı ikinci sonuç 21 olurdu.

int[][] m = {{1, 2, 3}, {4, 5, 6}};
for (int i = 0; i < m.length; i++) {
    int toplam = 0;
    for (int j = 0; j < m[i].length; j++) {
        toplam += m[i][j];
    }
    System.out.print(toplam + " ");
}

Çoktan Seçmeli · Matris

Soru 36: Düzensiz Dizide null Satır

Aşağıdaki kod çalıştırıldığında ne olur?

int[][] m = new int[3][];
m[0] = new int[2];
m[2] = new int[4];
System.out.println(m[0].length + m[2].length);
System.out.println(m[1].length);

B: new int[3][] yalnızca dış diziyi oluşturur; m[1] hiç atanmadığı için null kalır. 2 + 4 = 6 yazıldıktan sonra m[1].length null üzerinden alan okumaya çalışır → NullPointerException.

m0int[2]1null2int[4]

Son

Diziler: Çalışma Soruları
Konu anlatımı: Diziler sunumu
1 / 1 Sercan KÜLCÜ, Tüm hakları saklıdır.