• Sonuç bulunamadı

Diziler. BİL131 - Bilişim Teknolojileri ve Programlama. Hakan Ezgi Kızılöz

N/A
N/A
Protected

Academic year: 2022

Share "Diziler. BİL131 - Bilişim Teknolojileri ve Programlama. Hakan Ezgi Kızılöz"

Copied!
17
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

Diziler

BİL131 - Bilişim Teknolojileri ve Programlama Hakan Ezgi Kızılöz

(2)

Sıralama yapmak, farkına varsak da varmasak da günlük hayatta oldukça sık yaptığımız bir işlemdir.

En basitinden, sabah kalkınca yaptığımız işlerin bile bir sırası vardır.

Sıralama yapmak insanlar için bu kadar önemliyken, bilgisayar programlarında da tabii ki kendisine yer bulacaktır.

Dizi Elemanlarının Sıralanması

(3)

Bilgisayar programları kullanarak sıralama yapmak için çok sayıda algoritma geliştirilmiştir.

Biz burada en temel yöntemlerden birisi olan kabarcık sıralama (bubble sort) hakkında konuşacağız.

Kabarcık sıralama yönteminde iç içe iki döngü kullanılarak bütün elemanlar sıralanır.

Bu döngülerden dışarıda olan döngünün her tekrarında elemanlardan bir tanesi kendi yerine taşınmış olur. Bu

Dizi Elemanlarının Sıralanması

(4)

Kabarcık sıralamanın çalışma algoritması şu şekildedir:

1) Eğer listede sadece 1 eleman varsa sıralama bitti, dur.

2) Listeyi bir kere dolaş, her elemanı kendisinden gelen bir sonraki eleman ile karşılaştır, eğer gerekiyorsa karşılaştırma sonucu olarak bu iki elemanı yer değiştir.

3) Hiç yer değişikliği yapmadıysan sıralama bitti, dur.

Aksi halde en sondaki elemanı listeden çıkar, 1.

adıma dön ve tekrar başla.

Dizi Elemanlarının Sıralanması

(5)

Dizi Elemanlarının Sıralanması

0 19 1 4 2 81 3 71 4 55 5 13

0 4 1 19 2 81 3 71 4 55 5 13

0 4 1 19 2 81 3 71 4 55 5 13

0 4 1 19 2 71 3 81 4 55 5 13

0 4 1 19 2 71 3 55 4 81 5 13

0 4 1 19 2 71 3 55 4 13 5 81

Elemanları sırasıyla 19, 4, 81, 71, 55 ve 13 olan diziyi kabarcık sıralama algoritmasıyla sıralayalım.

X

(6)

Dizi Elemanlarının Sıralanması

0 4 1 19 2 71 3 55 4 13 5 81

0 4 1 19 2 71 3 55 4 13 5 81

0 4 1 19 2 71 3 55 4 13 5 81

0 4 1 19 2 55 3 71 4 13 5 81

0 4 1 19 2 55 3 13 4 71 5 81

Elemanları sırasıyla 19, 4, 81, 71, 55 ve 13 olan diziyi kabarcık sıralama algoritmasıyla sıralayalım.

X X

(7)

Dizi Elemanlarının Sıralanması

0 4 1 19 2 55 3 13 4 71 5 81

0 4 1 19 2 55 3 13 4 71 5 81

0 4 1 19 2 55 3 13 4 71 5 81

0 4 1 19 2 13 3 55 4 71 5 81

Elemanları sırasıyla 19, 4, 81, 71, 55 ve 13 olan diziyi kabarcık sıralama algoritmasıyla sıralayalım.

X X

(8)

Dizi Elemanlarının Sıralanması

0 4 1 19 2 13 3 55 4 71 5 81

0 4 1 19 2 13 3 55 4 71 5 81

0 4 1 13 2 19 3 55 4 71 5 81

Elemanları sırasıyla 19, 4, 81, 71, 55 ve 13 olan diziyi kabarcık sıralama algoritmasıyla sıralayalım.

X

(9)

Dizi Elemanlarının Sıralanması

0 4 1 13 2 19 3 55 4 71 5 81

0 4 1 13 2 19 3 55 4 71 5 81

Elemanları sırasıyla 19, 4, 81, 71, 55 ve 13 olan diziyi kabarcık sıralama algoritmasıyla sıralayalım.

X

(10)

Parametre olarak bir tam sayı dizisi alan ve bu diziyi kabarcık sıralama algoritması ile sıralayıp geri döndüren int[] kabarcik(int[]) metodu aşağıda verilmiştir:

Dizi Elemanlarının Sıralanması

public static int[] kabarcik(int[] dizi) {

int gecici;

for (int k = 1; k < dizi.length; k++){

for (int i = 0; i < dizi.length - k; i++){

if (dizi[i] > dizi[i+1]) {

gecici = dizi[i];

dizi[i] = dizi[i + 1];

dizi[i + 1] = gecici;

} }

}

return dizi;

(11)

Sadece bir dizi kullanarak ifade edemeyeceğimiz, bir sütundan fazla değer içeren verileri saklamak için çok boyutlu dizileri kullanabiliriz.

Örneğin, Ankara'nın bir yıllık sıcaklık verilerini haftalık diziler halinde elde ettiğimizi düşünelim. Bu durumda elimizde 52 tane 7 boyutlu dizi olacaktır.

52 farklı 7 boyutlu dizi oluşturmak yerine bir tane çok boyutlu dizi oluşturarak haftalık değerleri bir tek dizi içerisinde saklayabiliriz.

Java'da çok boyutlu dizi oluşturmak için aşağıdaki komutu kullanırız:

veri_turu[][] cokBoyutluDizi = new veri_turu[uzunluk1][uzunluk2];

Çok Boyutlu Diziler

(12)

Çok Boyutlu Diziler

Çok boyutlu dizilerin özellikleri ve kullanımları tek boyutlu dizilere benzerdir.

Tek boyutlu dizilerden farklı olarak, dizi elemanlarına bir değil birden fazla indis kullanılarak erişilir.

Örneğin biraz önceki örnekte 17. haftanın 3.

gününün sıcaklık değerine ulaşmak için sicakliklar[17][3] ifadesini kullanmamız gerekir.

(13)

Çok Boyutlu Diziler

Tek boyutlu dizilerde olduğu gibi, çok boyutlu dizilerin elemanları da dizi oluşturulurken atanabilir.

int[][] dizi = {{1,2,3}, {4,5,6}};

Çok boyutlu dizinin alt dizilerinin boyu farklı olabilir.

int[][] dizi2 = {{1,2,3}, {4,5,6,7,8}};

(14)

Çok Boyutlu Dizilerin Boyu

Tek boyutlu dizilerin boyunu diziIsmi.length komutu ile hesaplayabiliyorduk.

Çok boyutlu dizilerde diziIsmi.length komutu bize çok boyutlu dizinin ilk indisinin uzunluğunu verirken, ikinci indisin uzunluğunu bulmak için diziIsmi[0].length komutunu kullanmalıyız.

Yani sicakliklar dizisi için sicakliklar.length komutu bize 52 değerini verirken, sicakliklar[0].length komutunun değeri 7 olacaktır.

(15)

Çok Boyutlu Dizilerin Boyu

Eğer çok boyutlu dizilerde alt dizilerin boyutları farklıysa, her bir dizinin boyutuna o dizinin indisi ile eriştikten sonra ulaşabiliriz.

int[][] dizi2 = {{1,2,3}, {4,5,6,7,8}};

Yukarıdaki gibi tanımlanmış dizi2 dizisinin uzunluk değerlerine ulaşmak istersek;

dizi2.length sonucu 2,

dizi2[0].length sonucu 3 ve

(16)

Çok Boyutlu Dizileri Dolaşmak

Tek boyutlu dizi elemanlarını dolaşmak için bir tane for döngüsü kullanmamız yeterliydi.

Çok boyutlu dizi elemanlarını dolaşmak için ise her bir boyut için bir adet for döngüsü kullanmamız gerekmektedir.

(17)

Çok Boyutlu Dizileri Dolaşmak

Parametre olarak bir tane çok boyutlu tam sayı dizisi alan ve bu çok boyutlu dizinin bütün elemanlarını ekrana yazdıran void cbdYazdir(int[][]) metodu aşağıdadır:

public static void cbdYazdir(int[][] dizi) {

for(int i = 0; i < dizi.length; i++) {

for(int j = 0; j < dizi[i].length; j++) {

System.out.print(dizi[i][j] + " ");

}

Referanslar

Benzer Belgeler

Table (2) shows that the number of iterations obtained by the book is (39), distributed over (6) main areas, as attention is focused on the field (air and atmospheric pollution) at

Bu iki dizinin elemanlarını bulan ve elemanlarının karesini bulup yeni bir diziye aktaran algoritma ile program aşağıdaki gibi yazılır.. Fibonacci Dizisinin Elemanlarını

Orlicz normu ile donatılmış olan Musielak-Orlicz dizi uzayının H- özelliğine (Kadec-Klee özelliğine) sahip olması için gerek ve yeter şart Φ ∈ δ

Đkinci bölümde, bazı dizi uzayları üzerinde fark operatörü ve genelleştirilmiş fark operatörünün spektrumu verildi.. Üçüncü bölümde, bazı dizi

Sonlu bir aritmetik dizide, baştan ve sondan eşit uzaklıkta bulunan terimlerin toplamı birbirine eşittir.. Bir aritmetik dizide, her terim kendisinden eşit uzaklıktaki iki

The phylogenetic handbook: a practical approach to phylogenetic analysis and hypothesis testing.. Cambridge

Evolutionary genetics: Concepts, analysis, and practice.. Oxford University

Değer kümesi; reel sayılar kümesi olan dizi reel sayı dizisi, karmaşık sayılar olan dizi karmaşık sayı dizisi adını