ders notları

Report
MIT503
Veri Yapıları ve algoritmalar
Algoritma temsili
Y. Doç. Yuriy Mishchenko
Algoritma temsilleri
Ders planı
• Algoritma temsiline giriş
• Kaba veya Sözde Kod (PseudoCode)
• Akış şemaları (Flow Diagrams)
Algoritma temsilleri
• Algoritmalar, bir problemin çözümü olarak bir
talimat listesiyle belirtilir
• Bu talimat listesini temsil etmek için birkaç
opsiyon var:
– Doğal dil
– Bilgisayar kodu
– Akış şeması veya sözde kod
Algoritma temsilleri
• Bir veri deposunda arama problemi, iki örnek
Algoritma temsilleri
• Sıralanmamış veri deposu ise, Birinci eleman ile
başlayarak hedefi bulana kadar bütün elemanlara
bakmak
• Sıralanmış veri deposu ise, Ortadaki elemana
hemen bakıp, eğer o eleman hedeften büyük ise,
daha önce, değilse, daha sonra aynı şekilde
devam etmek
• Bunlar doğal dil kullanarak tanımlanmış
algoritmaların örneği
2
5
7
11
12
13
hedef
17
22
23
30
Algoritma temsilleri
• Bu tanımlamalar algoritmaların ana fikrini
genel şekilde açıklayabilmesine rağmen çok
kesin değil ve bir program şekline çevirmek
için programcıdan baya iş gerektirebilir
• Algoritma daha kesin şekilde belirtmek için
farklı yöntemleri kullanılmalı
Algoritma temsilleri
• Birçok durumda algoritma, bilgisayar program
kullanarak direkt olarak temsil edilir
• Bu yaklaşımın ana problemi –programlama
dilini bilmeyen kişi böyle algoritmaları
okuyamaz ve algoritmanın yapısı ve süreçleri
programlama dilinin yapıları ve süreçleriyle
(mesela değişken tanımları) gereksizce
karıştırılır
Sözde Kod
• Algoritmalar daha genel olarak belirtmek için
kama veya sözde kod (pseudocode) ve akış
şemaları (flow diagrams) kullanılır
Sözde Kod
• Sözde kod, günlük dili ve aynı zamanda
programlama dillerine benzer bir algoritma
tanımlama yöntemidir
Sözde Kod
• Sözde kod, birkaç temel yapı kullanır ve işlemlerin
çoğu için doğal dil kullanır
• Sözde kodla verilen algoritmaların önemli amacı, doğal dil
ile belirtilmiş algoritmayı daha kesin şekilde tanımlamak,
algoritmada kullanılacak tüm verileri değişkenler olarak
kesin şekilde tanımlamak, ve tipik eylemler için
(değişkene değer atanması, koşullu ve döngü eylemleri)
belirli formatı kullanmaktır
Sözde Kod
• En basit bir örnek - çorba pişirme tarifi:
– Kullanılacak malzemeler bu durumda değişkenler oluyor,
yani
•
•
•
•
•
Kullanılacak sebzeler – sebze çeşiti (S)
Kullanılacak tencere – tencere (T)
Kullanılacak su – su (SU)
Kullanılacak tuz – tuz (TUZ)
Kullanılacak tuz miktarı – bir sayı
• Bu şekilde değişkenlerin türleri ve doğaları algoritmanın
başında tanımlanınca gerçekleştirilecek iş de daha kesin
oluyor
Sözde Kod
• Çorba pişirme tarifi, değişkenleri kullanarak:
–
–
–
–
–
–
–
–
–
–
Sebzeleri alın (S olsun)
S’yi yıkayıp kesin
Tencereyi alın (T olsun)
T’ye su eklein (SU olsun)
T’yi ateşe koyun
SU kaynamasını bekleyin
T’ye S’yi ekleyin
BİRAZ miktarı tuz alın (TUZ olsun)
TUZ’yu SU’ya ekleyin
SU tadına bakın; pişmişse servis yapın
Sözde Kod
• Çorba pişirme algoritması (değişkenler):
–
–
–
–
–
–
–
–
–
–
Sebzeleri alın (S olsun)
S’yi yıkayıp kesin
Tencereyi alın (T olsun)
Bu talimatlar daha kolay
T’ye su eklein (SU olsun)
adım adım gerçekleştirilebilir
T’yi ateşe koyun
SU kaynamasını bekleyin
T’ye S’yi ekleyin
BİRAZ miktarı tuz alın (TUZ olsun)
TUZ’yu SU’ya ekleyin
SU tadına bakın; pişmişse servis yapın
Sözde Kod
• Sözde kodda algoritmadaki tipik eylemler için özel
formatlar kullanılır
• Genellikle şu formatlar için ingilizce kelimeler
kullanılır ama türkçe de olabilir – sözde kodun amacı,
algoritmanın doğal diline yakın şekilde tanımlamak
•
•
•
•
•
•
Değişkene değeri atama ( := veya SET,OLSUN)
Koşul (IF-THEN-ELSE, EĞER-İSE-DEĞİLSE)
Döngü, çeşit (FOR veya FOR ALL, BÜTÜN İÇİN)
Döngü, koşula bağlı (WHILE, İKEN)
Seçme (CASE, SEÇME)
Ayrı alt-işlem veya fonksiyon (FUNCTION, FONKSİYON)
Sözde Kod
• Atama işlemlerin örnekleri:
–
–
–
–
–
–
–
–
–
–
atama
Sebzeleri alın (S olsun)
S’yi yıkayıp kesin
atama
Tencereyi alın (T olsun)
atama
T’ye su eklein (SU olsun)
T’yi ateşe koyun
SU kaynamasını bekleyin
T’ye S’yi ekleyin
atama
BİRAZ miktarı tuz alın (TUZ olsun)
TUZ’yu SU’ya ekleyin
SU tadına bakın; pişmişse servis yapın
Sözde Kod
• Döngü eylemlerin örnekleri:
–
–
–
–
–
–
–
–
–
–
Sebzeleri alın (S olsun)
Çeşit döngü
S’yi yıkayıp kesin
Tencereyi alın (T olsun)
T’ye su eklein (SU olsun)
T’yi ateşe koyun
Koşullu döngü
SU kaynamasını bekleyin
T’ye S’yi ekleyin
BİRAZ miktarı tuz alın (TUZ olsun)
TUZ’yu SU’ya ekleyin
SU tadına bakın; pişmişse servis yapın
Koşullu döngü
Sözde Kod
• Çorba pişirme tarifinin sözde kodu:
–
–
–
–
–
–
–
–
–
–
–
–
S:=kullanılacak sebzeleri
T:=kullanılacak tencere
TUZ:=BİRAZ miktarda tuz
DÖNGÜ bütün S’deki s İÇİN, s yıkayın ve kesin
T’ye su ekleyin
SU:=T’deki su
T’yi ateşe koyun
SU kaynamamış İKEN bekleyin
T’ye S’yi ekleyin
T’ye TUZ’yu ekleyin
SU tadı pişmemiş İKEN bekleyin
servis yapın
Sözde Kod
• Çorba pişirme tarifinin sözde kodu (ingilizce):
–
–
–
–
–
–
–
–
–
–
–
–
S:=kullanılacak sebzeleri
T:=kullanılacak tencere
TUZ:=BİRAZ miktarda tuz
FOR ALL s in S, s yıkayın ve kesin
T’ye su ekleyin
SU:=T’deki su
T’yi ateşe koyun
WHILE SU kaynamamış, bekleyin
T’ye S’yi ekleyin
T’ye TUZ’yu ekleyin
WHILE SU tadı pişmemiş, bekleyin
servis yapın
Sözde Kod
• Özetleme, sözde kodu kullanarak
– Doğal dilinden daha kesin ve biçimsel algoritmanın temsili
sağlarız
– Bütün kullanılacak nesneler
kesin değişken olarak belirtiriz
– Kullanılacak değişkenlerin türleri S:=kullanılacak sebzeleri
T:=kullanılacak tencere
ve değerleri bütün zamanlarda
TUZ:=BİRAZ miktarlı tuz
DÖNGÜ bütün S’deki s İÇİN, s
kesin
yıkayın ve kesin
– Değer atanma, koşul işlemler ve T’ye su ekleyin
su
döngü işlemler (tekrarlama) gibi SU:=T’deki
T’yi ateşe koyun
SU kaynamamış İKEN bekleyin
tipik eylemleri belirli formatlar
T’ye S’yi ekleyin
kullanarak belirtiriz
SU’ya TUZ’yu ekleyin
SU tadı pişmemiş İKEN bekleyin
servis yapın
Sözde Kod
• İkiye bölme algoritması (doğal dil):
– Sıralanmış veri deposunda ilk önce orta elemanına
bakıp, eğer o eleman hedeften büyükse, daha önce,
değilse, daha sonra, hedef buluna kadar devam
ediyoruz
Sözde Kod
• İkiye bölme algoritması:
– Kullanılacak veriler değişkenler olarak atıyoruz
• Giriş veri deposu – D, bir dizi
• Hedef – H, bir şey
• D’nin ortasındaki eleman – O, bir şey
Sözde Kod
• İkiye bölme algoritması
–
–
–
–
H, hedef
D, giriş dizi
O, D dizisinin ortasındaki değeri
H O’ya eşit değil ve D boş dizi değil İKEN,
• EĞER O H’dan büyük İSE, D’nin sol yarısı yeni D olsun,
DEĞİLSE, D’nin sağ yarısı yeni D olsun
• O, (yeni) D dizisinin ortasındaki değeri
Sözde Kod
• Değişken atama işlemleri
–
–
–
–
atama
H, hedef
atama
D, giriş dizi
O, D dizisinin ortasındaki değeri atama
H O’ya eşit değil ve D boş dizi değil İKEN,
• EĞER O H’dan büyük İSE, D’nin sol yarısı yeni D olsun,
DEĞİLSE, D’nin sağ yarısı yeni D olsun
• O, (yeni) D dizisinin ortasındaki değeri
atama
atama
Sözde Kod
• Koşullu işlem
–
–
–
–
H, hedef
D, giriş dizi
O, D dizisinin ortasındaki değeri
H O’ya eşit değil ve D boş dizi değil İKEN,
eğer-ise koşul
• EĞER O H’dan büyük İSE, D’nin sol yarısı yeni D olsun,
DEĞİLSE, D’nin sağ yarısı yeni D olsun
• O, (yeni) D dizisinin ortasındaki değeri
Sözde Kod
• Döngü işlem
–
–
–
–
H, hedef
D, giriş dizi
O, D dizisinin ortasındaki değeri
H O’ya eşit değil ve D boş dizi değil İKEN,
Koşullu döngü
• EĞER O H’dan büyük İSE, D’nin sol yarısı yeni D olsun,
DEĞİLSE, D’nin sağ yarısı yeni D olsun
• O, (yeni) D dizisinin ortasındaki değeri
Sözde Kod
• İkiye bölme algoritması:
–
–
–
–
H:=hedef değeri
D:= verilen sayı dizisi
O:= D’nin ortadaki değeri
(O!=H ve O boş değil) İKEN
• EĞER O H’dan büyük İSE
D:=D’nin sağa yarısı
DEĞİLSE
D:=D’nin sağa yarısı
• O:= D’nin ortadaki değeri
ATAMALAR
Sözde Kod
• İkiye bölme algoritması:
–
–
–
–
H:=hedef değeri
D:= verilen sayı dizisi
O:= D’nin ortadaki değeri
(O!=H ve O boş değil) İKEN
• EĞER O H’dan büyük İSE
D:=D’nin sağa yarısı
DEĞİLSE
D:=D’nin sağa yarısı
• O:= D’nin ortadaki değeri
EĞER-ISE KOŞULLAR
Sözde Kod
• İkiye bölme algoritması:
–
–
–
–
H:=hedef değeri
D:= verilen sayı dizisi
O:= D’nin ortadaki değeri
(O!=H ve O boş değil) İKEN
• EĞER O H’dan büyük İSE
D:=D’nin sağa yarısı
DEĞİLSE
D:=D’nin sağa yarısı
• O:= D’nin ortadaki değeri
KOŞULLU DÖNGÜ
Sözde Kod
• İkiye bölme algoritmasının sözde kodu:
– H:=hedef değeri
D:= verilen sayı dizisi
O:= D’nin ortadaki değeri
(O!=H ve O boş değil) İKEN
EĞER O>H İSE
D:=D’nin sol yarısı
DEĞİLSE
D:=D’nin sağ yarısı
O:= D’nin ortadaki değeri
Sözde kod yapıları
Sözde kod yapıları
• KOŞUL İŞLEM
– EĞER koşul İSE
doğru ise işlemler
DEĞİLSE
aski halde işlemler
EĞER SONU
• Eğer koşul doğru ise, belirtilen işlemleri işletilir
Sözde kod yapıları
• KOŞUL İŞLEM
– IF koşul THEN
doğru ise işlemler
ELSE
aski halde işlemler
END IF
• Eğer koşul doğru ise, belirtilen işlemleri işletilir
Sözde kod yapıları
• KOŞULLU İŞLEM, birkaç koşul formu
– EĞER 1. koşul İSE
doğru ise işlemler
EĞER 2. koşul İSE
doğru ise işlemler
...
AKSİ HALDE
aski halde işlemler
EĞER SONU
Sözde kod yapıları
• KOŞULLU İŞLEM, birkaç koşul formu
– IF 1. koşul THEN
doğru ise işlemler
ELSE İF 2. koşul THEN
doğru ise işlemler
...
ELSE
aski halde işlemler
END IF
Sözde kod yapıları
• KOŞULLU DÖNGÜ
– (koşul) İKEN
doğru iken işlemler
DÖNGÜ SONU
• Koşul doğrudur iken belirli işlemleri tekrar
tekrar işletilir
Sözde kod yapıları
• KOŞULLU DÖNGÜ
– WHILE (koşul) DO
doğru iken işlemler
END WHİLE
• Koşul doğru iken belirli işlemleri tekrar tekrar
işletilir
Sözde kod yapıları
• KOŞULLU DÖNGÜ (2. form)
– DÖNGÜ
doğru iken işlemler
(koşul) İKEN
• Önceki döngü gibi ama koşulu döngünün
işlemlerinden sonra kontrol edilir
Sözde kod yapıları
• KOŞULLU DÖNGÜ(2. form)
– REPEAT
doğru iken işlemler
UNTIL koşulu DO
• Önceki döngü gibi ama koşulu döngünün
işlemlerinden sonra kontrol edilir
Sözde kod yapıları
• ÇEŞİT DÖNGÜ (1. form)
– BÜTÜN değişken ilk_değeri’NDEN son_değeri’NE
KADAR
döngü işlemleri
DÖNGÜ SONU
• Belirli operasyonları tekrar tekrar yapmak
demektir
Sözde kod yapıları
• ÇEŞİT DÖNGÜ (1. form)
– FOR değişken FROM ilk_değeri TO son_değeri DO
döngü işlemi
END FOR
• Belirli işlemi tekrar tekrar yapmak demektir
Sözde kod yapıları
• ÇEŞİT DÖNGÜ (2. form)
– BÜTÜN değer_listesi’NDEKİ değişken İÇİN
döngü işlemleri
DÖNGÜ SONU
• Bütün “değer listesi” için belirli işlemi tekrar
tekrar yapmak demektir
Sözde kod yapıları
• ÇEŞİT DÖNGÜ (2. form)
– FOR değişken İN değer_listesi DO
döngü işlemleri
END FOR
• Bütün “değer listesi” için belirli işlemi tekrar
tekrar yapmak demektir
Sözde kod yapıları
• SEÇME İŞLEMİ
– SEÇME ifade
1. değeri: doğru ise işlem
2. değeri: doğru ise işlem
...
ASKİ HALDE:
aksi halde işlem
SEÇME SONU
• İfadeye göre değer listesinden bir değeri seçip
uyan işlem yapmak demektir
Sözde kod yapıları
• SEÇME İŞLEMİ
– CASE ifade OF
1. değeri: doğru ise işlem
2. değeri: doğru ise işlem
...
OTHERS:
aksi halde işlem
END CASE
• İfadeye göre değer listesinden bir değeri seçip
uyan işlem yapmak demektir
Sözde kod yapıları
• ALT-İŞLEM veya FONKSİYON
– FONKSİYON fonksiyon_adı (argumanlar)
yapılacak işlem
SONUÇ sonuç
FONKSİYON SONU
• Daha sonra algoritmada kullanılacak ve bir
sonucu verecek ayrı alt-işlem veya fonksiyon
demektir
Sözde kod yapıları
• AYRI ALT-İŞLEM veya FONKSİYON
– FUNCTION fonksiyon_adı (argumanlar)
yapılacak işlem
RETURN sonuç
END FUNCTION
• Daha sonra algoritmada kullanılacak ve bir
sonucu verecek ayrı alt-işlem veya fonksiyon
demektir
Sözde kod yapıları
• ALT-İŞLEM veya FONKSİYON (kullanma)
– ÇAĞIR fonksiyon_adı (argumanlar) (1. form)
fonksiyon_adı (argumanlar) (2. form)
• Alt-işlemi işletmek ve sonucunu elde etmek
Sözde kod yapıları
• ALT-İŞLEM veya FONKSİYON (kullanma)
– CALL fonksiyon_adı (argumanlar) (1. form)
fonksiyon_adı (argumanlar) (2. form)
• Alt-işlemi işletmek ve sonucunu elde etmek
Sözde kod yapıları
Koşullu işlemleri
• IF koşul THEN işlem ELSE işlem END IF
• CASE (ifade) değer-işlem listesi OTHERS işlem END CASE
Sözde kod yapıları
Döngü işlemleri
• WHILE koşul DO işlem END WHILE
• REPEAT işlem UNTIL koşul DO
• FOR iteratör değişkeni FROM ilk_değer TO son_değer DO işlem
END FOR
• FOR iteratör değişkeni İN liste DO işlem END FOR
• CASE (ifade) değer-işlem listesi OTHERS aksi halde işlem END CASE
Sözde kod yapıları
Fonksiyonlar/içinde kullanılan diğer algoritmalar
• FUNCTION fonksiyon_adı (paremetreler)
yapılacak işlem
RETURN sonuç
END FUNCTION
• Fonksiyon işletme:
CALL fonksiyon_adı(paremetreler)
fonksiyon_adı(paremetreler)
Sözde kod yapıları
Koşullu işlemler
• EĞER koşul İSE işlem DEĞİLSE işlem EĞER SONU
• SEÇME (ifade) “değer:işlem” listesi AKSİ HALDE işlem SEÇME SONU
Sözde kod yapıları
Döngü işlemleri
• (koşul) İKEN işlem DÖNGÜ SONU
• DÖNGÜ işlem (koşul) İKEN
• BÜTÜN iteratör değişkeni ilk_değer’DEN son_değer’E KADAR işlem
DÖNGÜ SONU
• BÜTÜN liste’DEKİ iteratör değişkeni İÇİN işlem DÖNGÜ SONU
Sözde kod yapıları
Fonksiyonlar/içinde kullanılan diğer algoritmalar
• FONKSİYON fonksiyon_adı (paremetreler)
yapılacak işlem
SONUÇ sonuç
FONKSİYON SONU
• Fonksiyon çağırma:
ÇAĞIR fonksiyon_adı(paremetreler)
fonksiyon_adı(paremetreler)
Örnekler
• Sıralanmamış dizide arama
– H:=hedef değeri
D:=verilen dizi
N:=D’nin boyutu
pozisyon:= 0
DÖNGÜ
pozisyon := pozisyon + 1
O := D[pozisyon]
(O!=H ve pozisyon <N) İKEN
Örnekler
• Sıralanmış dizide arama
– H:= hedef değeri
D:= verilen dizi
(D’nin boyutu>1) İKEN
O:= D([D’nin boyutu/2])
EĞER O = H İSE
dur
EĞER O<H İSE
D:= D’nin sağ yarısı
AKSİ HALDE
D:= D’nin sol yarısı
İSE SONU
DÖNGÜ SONU
Örnekler
• Ellerimizde var olan algoritmayı
anlamak için onu okuyabilmemiz
gerekiyor
• Algoritmayı okumak, o algoritmada
belirtilen işlemleri sırayla kafamızda
işletmek ve o sırada gerçekleştirilecek
verileri evrimi ve sonuçları anlayabilmek
demektir
Örnekler
• Sıralanmış dizide arama
– H, hedef değeri
D, verilen dizi
(D’nin boyutu>1) İKEN
O:= D([D’nin boyutu/2])
EĞER O = H İSE
dur
EĞER O<H İSE
D:= D’nin sağ yarısı
AKSİ HALDE
D:= D’nin sol yarısı
İSE SONU
DÖNGÜ SONU
Örnekler
• Sıralanmış dizide arama
– H, hedef değeri
D, verilen dizi
(D’nin boyutu>1) İKEN
O, D’nin orta değeri
EĞER O = H İSE
dur
EĞER O<H İSE
D:= D’nin sağ yarısı
AKSİ HALDE
D:= D’nin sol yarısı
İSE SONU
DÖNGÜ SONU
Örnekler
• Sıralanmış dizide arama
– H, hedef değeri
D, verilen dizi
(D’nin boyutu>1) İKEN
O, D’nin orta değeri
EĞER O = H İSE
dur
EĞER O<H İSE
D, D’nin sağ yarısı oluyor
AKSİ HALDE
D, D’nin sol yarısı oluyor
İSE SONU
DÖNGÜ SONU
Örnekler
• Sıralanmış dizide arama
– H, hedef değeri
D, verilen dizi
D’nin boyutu 1’den büyük veya O H’ya eşit değilken
devam edilir,
O, D’nin orta değeri
EĞER O<H İSE
D, D’nin sağ yarısı oluyor
AKSİ HALDE
D, D’nin sol yarısı oluyor
İSE SONU
Akış şemaları
• Akış şemaları, algoritmanın grafik olarak genel
işlem sırasının bir gösterimidir
• Bloklar ve oklar kullanarak algoritmanın
işletme şekli gösterilir
• Bloklar, algoritmanın işlemlerini temsil eder
• Oklar, algoritmanın işlem sırasını temsil eder
• Bir bloktan birkaç çıkan ok, algoritmadaki
seçimleri temsil eder
Akış şeması: Naif arama
Başlangıç
p:= dizi başı
evet
bitiş
hedef
=
dizi(p)
hair
p:=p+1
Akış şeması yapıları
Başlangıç/sonuç
Bir işlem
Koşullu işlem
Akış şeması yapıları
Başlangıç/sonuç
Bir işlem
Koşullu işlem
İşlemleri genellikle bloklar içerisinde yazılır
Örnek: ikiye bölme
İkiye bölme sözde kodu
H:= hedef değeri
D:= verilen dizi
(D’nin boyutu>0 ve O!=Р) İKEN
O:= D’nin orta elemanı
EĞER O<H İSE
// hedef sadece sağda olabilir
D:= D’nin sağ yarısı
DEĞİLSE
// hedef sadece solda olabilir
D:= D’nin sol yarısı
Akış şeması: ikiye bölme
başlangıç
D:= giriş dizisi
Bitiş,
bulmadı
hair
D ‘nin
boyutu
>0
D:= D’nin sol yarısı
D(orta) > hedef
evet
D(orta)
?
hedef
eşit
D(orta) < hedef
D:= D’nin sağ yarısı
Bitiş,
buldu
Örnek: kabarcık algoritması
Kabarcık sıralama algoritması, basit bir
sıralama algoritmadır
• Diziyi ilk sayı’dan son sayı’ya inceleyin, yanlış sırada bir çift
görürseniz, çiftteki sayıların yerlerini değiştirin, yanlış
sırada çift olmayacağına kadar tekrarlayın
Diziyi ilk sayı’dan son sayı’ya inceleyip yanlış
sırada çiftler varsa sayılarını yerlerini değiştirin ...
2
5
7
11
17
13
15
18
Yanlış sırada çift vardı ...
23
30
Örnek: kabarcık sıralama
Kabarcık sıralama algoritması
D:=giriş dizi
bayrak:= 1
(bayrak = 1) İKEN
p:= 1
D(p) < D(p+1) İKEN
p:=p + 1
DÖNGÜ SONU
EĞER p = D’nin boyutu İSE
bayrak:=0
AKSİ HALDE
p ve p+1 ‘deki D elemanlarının yerleri değiştirilir
İSE SONU
DÖNGÜ SONU
Örnek: kabarcık sıralama
Kabarcık sıralama algoritması
D:=giriş dizi
bayrak:= 1
(bayrak = 1) İKEN
p:= 1
D(p) < D(p+1) İKEN
p:=p + 1
Bayraklar (veya “flags”) algoritmanın bir
durumu belirtip tutmak için çok sık
kullanılır; burada bayrak, dizide yanlış
sırada çiftler varmış diye durumu belirtmek
için kullanılır
DÖNGÜ SONU
EĞER p = D’nin boyutu İSE
bayrak:=0
AKSİ HALDE
p ve p+1 ‘deki D elemanlarının yerleri değiştirilir
İSE SONU
DÖNGÜ SONU
Örnek: kabarcık sıralama
Kabarcık sıralama algoritması
D:=giriş dizi
bayrak:= 1
(bayrak = 1) İKEN
p:= 1
D(p) < D(p+1) İKEN
p:=p + 1
Yani döngü, dizide yanlış sırada çiftler
varken tekrarlanması gerekiyor
DÖNGÜ SONU
EĞER p = D’nin boyutu İSE
bayrak:=0
AKSİ HALDE
p ve p+1 ‘deki D elemanlarının yerleri değiştirilir
İSE SONU
DÖNGÜ SONU
Örnek: kabarcık sıralama
Kabarcık sıralama algoritması
D:=giriş dizi
bayrak:= 1
(bayrak = 1) İKEN
p:= 1
D(p) < D(p+1) İKEN
p:=p + 1
Döngüdeki işlem 1. dizinin
elemanıyla başlıyor
DÖNGÜ SONU
EĞER p = D’nin boyutu İSE
bayrak:=0
AKSİ HALDE
p ve p+1 ‘deki D elemanlarının yerleri değiştirilir
İSE SONU
DÖNGÜ SONU
Örnek: kabarcık sıralama
Kabarcık sıralama algoritması
D:=giriş dizi
bayrak:= 1
(bayrak = 1) İKEN
p:= 1
D(p) < D(p+1) İKEN
p:=p + 1
DÖNGÜ SONU
p’deki D çiftleri doğru
sıradayken p dizide ilerletiliyor
EĞER p = D’nin boyutu İSE
bayrak:=0
AKSİ HALDE
p ve p+1 ‘deki D elemanlarının yerleri değiştirilir
İSE SONU
DÖNGÜ SONU
Örnek: kabarcık sıralama
Kabarcık sıralama algoritması
D:=giriş dizi
bayrak:= 1
(bayrak = 1) İKEN
p:= 1
D(p) < D(p+1) İKEN
p:=p + 1
DÖNGÜ SONU
Bu döngüden sonra iki durum var
EĞER p = D’nin boyutu İSE
bayrak:=0
AKSİ HALDE
p ve p+1 ‘deki D elemanlarının yerleri değiştirilir
İSE SONU
DÖNGÜ SONU
Örnek: kabarcık sıralama
Kabarcık sıralama algoritması
D:=giriş dizi
bayrak:= 1
(bayrak = 1) İKEN
p:= 1
D(p) < D(p+1) İKEN
p:=p + 1
DÖNGÜ SONU
Eğer D bitmişse demek yanlış sırada
çiftler yokmuş – bu durumda “bayrak”ı
sıfıra koyup döngüden çıkması lazım –
yanlış sırada çiftler yok olması D
sıralanmış olmasını demektir
EĞER p = D’nin boyutu İSE
bayrak:=0
AKSİ HALDE
p ve p+1 ‘deki D elemanlarının yerleri değiştirilir
İSE SONU
DÖNGÜ SONU
Örnek: kabarcık sıralama
Kabarcık sıralama algoritması
D:=giriş dizi
bayrak:= 1
(bayrak = 1) İKEN
p:= 1
D(p) < D(p+1) İKEN
p:=p + 1
DÖNGÜ SONU
Aksi halde p’deki çiftin
elemanlarının yerlerini değiştirip
inceleme baştan tekrarlanması
gerekiyor
EĞER p = D’nin boyutu İSE
bayrak:=0
AKSİ HALDE
p ve p+1 ‘deki D elemanlarının yerleri değiştirilir
İSE SONU
DÖNGÜ SONU
Kabarcık sıralamanın akış şeması
başlangıç
p:=dizi başı
dizi bitti
Bitiş
p çifti
yanlış
sırada ?
hair
evet
çift sayıların yerleri değiştirin
p:=dizi başı
p:=p+1
Ev çalışması
• Önce incelediğimiz bütün algoritmaları sözde
kod şeklinde yazın
• 2-3 algoritmalar için akış şemalarını çizin
http://scinetcentral.com/~mishchenko/MIT503.html

similar documents