Diziler
Çoktan Seçmeli · Temeller
Soru 1: Uzunluk ve Son İndeks
int[] a = new int[6]; ile oluşturulan dizi için hangisi doğrudur?
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
newile oluşturulan dizinin hücreleri türün varsayılan değerini alır.- İkinci satırda üç
inttoplanır: 3 + 2 + 2 = 7 (önce String yok, toplama yapılır).
Ç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.
Çı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.printsatır atlamaz;println()ikinci diziyi alt satıra geçirir.
Ç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.
Çı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 solundakip[1]hücrenin kendisidir.p[2]--→ 89;p[p.length - 1]=p[2]= 89.- Son satırda iki
inttoplanır: 70 + 160 = 230.
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.
Dört elemanlı dizi. Dikkat: değerler aynı zamanda geçerli indekslerdir (0–3).
i = 0; 0 < 4 → true.
dizi[0] = 0 → dizi[0] = dizi[0] = 0; değişiklik yok.
i = 1; 1 < 4 → true.
dizi[1] = 2 → dizi[1] = dizi[2] = 3.
i = 2; 2 < 4 → true.
dizi[2] = 3 → dizi[2] = dizi[3] = 1.
i = 3; 3 < 4 → true.
dizi[3] = 1 → dizi[3] = dizi[1]. dizi[1] artık 2 değil, i = 1 adımında yazılan 3!
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 = ayeni dizi oluşturmaz: a ve b aynı nesneyi gösterir,b[0] = 9a'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.
Ç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.
Ç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 >= 0yanlış, döngü biter (sınır dışına çıkılmaz).
Çı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.
Ç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.
Ç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.
Çı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.
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.
İlk eleman aday olur (0 ile başlatmak pozitif dizide yanlış sonuç verirdi).
i = 1'den başlanır (dizi[0] zaten aday). 3 < 7 → true.
minimum = 3.
9 < 3 → false; minimum değişmez.
1 < 3 → true.
minimum = 1.
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 / 0ondalıklı bölmedir, hata vermez, NaN (Not a Number) üretir. (İki int olsaydı0 / 0ArithmeticException verirdi.) Öncedizi.length > 0kontrolü 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.
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.
On elemanlı dizi. Her eleman için önce çift mi, değilse 3'e bölünüyor mu bakılacak.
20 % 2 == 0 → çift: 20 × 2 = 40.
15 tek, 15 % 3 == 0 → 15 × 3 = 45.
16 % 2 == 0 → çift: 16 × 2 = 32.
6 % 2 == 0 → çift: 6 × 2 = 12. (3'e de bölünür ama else if'e hiç bakılmaz.)
10 % 2 == 0 → çift: 10 × 2 = 20.
19 ne çift ne 3'e bölünüyor → değişmez.
12 % 2 == 0 → çift: 12 × 2 = 24. (3'e de bölünür ama else if'e hiç bakılmaz.)
5 ne çift ne 3'e bölünüyor → değişmez.
3 tek, 3 % 3 == 0 → 3 × 3 = 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 ifyalnı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.
Ç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?
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.
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.
Başlangıç dizisi.
Son eleman kaybolmasın diye saklanır.
Sağdan sola gidilir: i = 3; 3 > 0 → true.
a[3] = a[2] = 3.
i = 2: a[2] = a[1] = 2.
i = 1: a[1] = a[0] = 1.
i = 0; 0 > 0 → false, döngü biter.
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.
Arama aralığı tüm dizi: lo = 0, hi = 6.
0 <= 6 → mid = (0 + 6) / 2 = 3, a[3] = 15.
15 == 11 → false; 15 < 11 → false.
else: hi = mid − 1 = 2. Sağ yarı elendi.
0 <= 2 → mid = (0 + 2) / 2 = 1, a[1] = 8.
8 == 11 → false; 8 < 11 → true: lo = mid + 1 = 2.
2 <= 2 → mid = 2, a[2] = 11.
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?
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.
Çı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.lengthsatır sayısı (2),m[0].lengthilk 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.
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.
2 satır, 3 sütun.
i = 0 satırı; toplam her satır başında sıfırlanır.
toplam += m[0][0] → 1.
toplam += m[0][1] → 3.
toplam += m[0][2] → 6. Sonra j = 3 < 3 → false.
Satır toplamı yazılır.
i = 1 satırı; toplam yeniden 0.
toplam += m[1][0] → 4.
toplam += m[1][1] → 9.
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.