BLM-112 PROGRAMLAMA DİLLERİ II. Ders-7 Sıralama Algoritmaları

Benzer belgeler
Yrd. Doç. Dr. Ümit ATİLA

Yrd. Doç. Dr. Caner ÖZCAN

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-2 Değişken Kavramı ve Temel Operatörler

Algoritmalar. Arama Problemi ve Analizi. Bahar 2016 Doç. Dr. Suat Özdemir 1

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-4 Döngü Yapıları. Yrd. Doç. Dr. Ümit ATİLA

VERİ YAPILARI VE PROGRAMLAMA

Dr. Fatih AY Tel: fatihay@fatihay.net

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-10 Diziler. Yrd. Doç. Dr. Ümit ATİLA

Hafta 7 C Programlama Diline Giriş ve C Derleyicisi

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

YZM 2116 Veri Yapıları

ALGORİTMA VE PROGRAMLAMA I

BLM111 Programlama Dilleri I. Hafta 10 Diziler. Yrd. Doç. Dr. Caner ÖZCAN

Algoritmalar. Sıralama Problemi ve Analizi. Bahar 2017 Doç. Dr. Suat Özdemir 1

Veri Yapıları. Yrd. Doç. Dr. Şadi Evren ŞEKER

Algoritmaların Karşılaştırılması. Doç. Dr. Aybars UĞUR

Alıştırma 1: Yineleme

BIP116-H14-1 BTP104-H014-1

BİLGİSAYAR PROGRAMLAMA Araş. Gör. Ahmet ARDAHANLI. Kafkas Üniversitesi Mühendislik Fakültesi

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#6: AZALT VE FETHET YÖNTEMİ

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA

Algoritmalar. Doğrusal Zamanda Sıralama. Bahar 2017 Doç. Dr. Suat Özdemir 1

F(A, N, K) // A dizi; N, K integer if N<0 then return K; if A[N]>K then K = A[N]; return F(A, N-1, K);

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-1 Kapsama Kuralları & Rasgele Sayı Üretimi & Rekürsif (Özyinelemeli) Fonksiyonlar

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

ALGORİTMA VE PROGRAMLAMA I

Hafta 12 Karakter Tutan Diziler

Java, Python ve Ruby Dillerinin Performans Karşılaştırması

Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği

Hafta 5 Algoritma Örnekleri ve Analizi

Hafta 11 Çok Boyutlu Diziler

BİL-341 ALGORİTMALAR BÜYÜK O NOTASYONU AHMET ATAKAN atakanahmet@hotmail.com KIRGIZİSTAN-TÜRKİYE MANAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

Hafta 4 Döngü Yapıları

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

Yrd. Doç. Dr. Caner ÖZCAN

Olimpiyat Soruları. sonuçları tekrar fonksiyonda yerine koyup çıkan tüm sonuçları toplayan program (iterasyon sayısı girilecek)

I Java Veri Yapıları 1

Yrd. Doç. Dr. Caner ÖZCAN

VERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ. Yard. Doç. Dr. Deniz KILINÇ

Veri Yapıları. for(i=1;i<n;i++) { ekle=d[i]; for (k=i 1; k>=0 && ekle<=d[k] ;k ) D[k+1]=D[k]; /* Geriye kaydırılıyor*/

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

Algoritmalar. Heap Sort. Bahar 2017 Doç. Dr. Suat Özdemir 1

BMT207 VERİ YAPILARI DATA STRUCTURE

Bilgisayar programlamanın üç temel mantık yapısından biridir. Diğer ikisi ise Seçilim(Selection) ve Döngü(Loop, Iteration)dür.

Hafta 13 Fonksiyonlar

VERİ YAPILARI DATA STRUCTURE GİRİŞ

Yrd. Doç. Dr. Caner ÖZCAN

Algoritmalar ve Karmaşıklık

YZM 2116 Veri Yapıları

Yrd. Doç. Dr. Caner ÖZCAN

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

Algoritmalara Giriş 6.046J/18.401J

Algoritma Analizi ve Büyük O Notasyonu. Şadi Evren ŞEKER YouTube: Bilgisayar Kavramları

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#1: ALGORİTMA KAVRAMI

VERİ YAPILARI. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ HASH TABLOLARI.

Arama Algoritmaları. Doğrusal Arama ve Binary Arama

Temel Bilgisayar Programlama

YZM 2116 Veri Yapıları

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#2: ALGORİTMA ANALİZİ

Hafta 9 C Dilinde Kontrol ve Döngü Yapıları

SIRALAMA SORTING. Yrd. Doç. Dr. Aybars UĞUR

Algoritmalara Giriş Eylül 21, 2005 Massachusetts Institute of Technology Profesörler Erik D. Demaine ve Charles E. Leiserson Çalışma notu 6

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

Azalt ve Fethet Algoritmaları

Yrd. Doç. Dr. Caner ÖZCAN

YZM VERİ YAPILARI DERS#9: HASH FONKSİYONLARI

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

Yrd. Doç. Dr. Caner ÖZCAN

BLM-431 YAPAY ZEKA. Ders-4 Bilgisiz Arama Yöntemleri. Yrd. Doç. Dr. Ümit ATİLA

Veri Yapıları Laboratuvarı

BIL222 Veri Yapıları ve Algoritmalar

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

Binary Search. (Yarılama) Bölüm Dizide Bir Öğe Arama

BMB204. Veri Yapıları Ders 9. B+ Ağacı, Hash, Heap. Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

3.Hafta Master Teorem ve Böl-Fethet Metodu

Diziler & Karakter Katarı (String)

DOSYA ORGANİZASYONU. Sıralı erişimli dosya organizasyonu yöntemleri ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

VERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ

BİLGİSAYAR PROGRAMLAMA DERSİ

YZM 2116 Veri Yapıları

b) Algoritmanızın en kötü durumda işlem zamanını asimptotik olarak bulunuz

Veri Yapıları. Öğr.Gör.Günay TEMÜR Düzce Üniversitesi Teknolojis Fakültesi

Algoritma Geliştirme ve Veri Yapıları 7 Liste ve Bağlantılı Liste. Mustafa Kemal Üniversitesi

Yrd. Doç. Dr. Caner ÖZCAN

Ağaç (Tree) Veri Modeli

Fonksiyon Optimizasyonunda Genetik Algoritmalar

Arasınav Örnek Soruları Bahar 2018

AĞAÇLAR. Doç. Dr. Aybars UĞUR

Bölüm Özeti. Algoritmalar. Fonksiyonların Büyümesi. Algoritmaların Karmaşıklığı. Örnek Algoritmalar Algoritmik Paradigmalar

Gezgin Satıcı Probleminin İkili Kodlanmış Genetik Algoritmalarla Çözümünde Yeni Bir Yaklaşım. Mehmet Ali Aytekin Tahir Emre Kalaycı

Programlama Giriş. 17 Ekim 2015 Cumartesi Yrd. Doç. Dr. Mustafa YANARTAŞ 1

BLM 111 Algoritma ve Programlama I Güz 2018

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

ı ı ı ğ ş ı ı ı ı ı ı ı ı

Transkript:

BLM-112 PROGRAMLAMA DİLLERİ II Ders-7 Sıralama Algoritmaları Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/

Sıralama Bir grup veriyi azalan veya artan şekilde yerleştirme. Bilgisayar sistemleri için veri sıralama çok önemlidir. Sıralama işlemi, hem arama işlemlerini hem de bir grup veriyi listeleme işlemini hızlandırmaya yarar. En popüler sıralama algoritmaları: Insertion sort (Araya ekleme sıralaması) Selection sort (Seçim sıralaması) Bubble sort (Kabarcık sıralaması) Quick sort (Hızlı sıralama)

Kabarcık Sıralaması (Bubble Sort) Zaman karmaşıklığı O(n2) Eğer n adet elemandan c adet eleman sıralı değilse zaman karmaşıklığı O(c n) Algoritmanın tasarımı kolaydır ancak algoritma verimli değildir. Az sayıda eleman üzerinde ya da çoğu elemanı zaten sıralanmış listeler üzerinde kullanılabilir.

Kabarcık Sıralaması (Bubble Sort) Sıralanacak dizi: [7,3,5,1,2] Hareket 1- Çevrim-1 [3,7,5,1,2] Hareket 1- Çevrim-2 [3,5,7,1,2] Hareket 1- Çevrim-3 [3,5,1,7,2] Hareket 1- Çevrim-4 [3,5,1,2,7] Hareket 2- Çevrim-1 [3,5,1,2,7] Hareket 2- Çevrim-2 [3,1,5,2,7] Hareket 2- Çevrim-3 [3,1,2,5,7] Hareket 2- Çevrim-4 [3,1,2,5,7] Hareket 3- Çevrim-1 [1,3,2,5,7] Hareket 3- Çevrim-2 [1,2,3,5,7] Hareket 3- Çevrim-3 [1,3,2,5,7] Hareket 3- Çevrim-4 [1,3,2,5,7] Hareket 4- Çevrim-1 [1,3,2,5,7] Hareket 4- Çevrim-2 [1,2,3,5,7] Hareket 4- Çevrim-3 [1,2,3,5,7] Hareket 4- Çevrim-4 [1,2,3,5,7]

Kabarcık Sıralaması (Bubble Sort)

Kabarcık Sıralaması (Bubble Sort)Sıralaması

Araya Ekleme Sıralaması(Insertion Sort) Sıralı bir listeye eleman eklemek için uygundur. Sıralı bir listeye eleman eklemenin karmaşıklığı : O(n) Eğer liste veya dizi sıralı değilse karmaşıklığı : O (n 2 )

Araya Ekleme Sıralaması(Insertion Sort) Sıralanacak dizi: [7,3,5,8,2] Başlangıç durumu : [7][3,5,8,2] Önce Sonra [7,3][5,8,2] [3,7][5,8,2] [3,7,5][8,2] [3,5,7][8,2] [3,5,7,8][2] [3,5,7,8][2] [3,5,7,8,2][ ] [2,3,5,7,8][ ]

Araya Ekleme Sıralaması(Insertion Sort)

Araya Ekleme Sıralaması(Insertion Sort)

Seçim Sıralaması (Selection Sort) Eğer bir eleman olması gereken yerde ise bulunduğu sıra değiştirilmez. Yarı yarıya sıralanmış bir grup veri olması durumunda eleman yeri değişimi azdır. Listedeki ilk elemanı al ve bu elemanı diğer elemanlar arasından en küçüğü ile değiştir. Bu işlemi son elemana kadar tekrar et. Önce Sonra [][7,3,5,1,2] [1][3,5,7,2] 1 ve 7 değiştirildi [1][3,5,7,2] [1,2][5,7,3] 2 ve 3 değiştirildi [1,2][5,7,3] [1,2,3][7,5] 3 ve 5 değiştirildi [1,2,3][7,5] [1,2,3,5][7] 5 ve 7 değiştirildi [1,2,3,5][7] [1,2,3,5,7][] son

Seçim Sıralaması (Selection Sort)

Seçim Sıralaması (Selection Sort)

Arama Bir dizi içerisinde belli bir elemanı bulma sürecine arama denir. İki arama tekniği tartışılacak. Doğrusal Arama (Linear Search) İkili Arama (Binary Search)

Doğrusal Arama (Linear Search) Dizinin her bir elemanını aranan ile karşılaştırır. Dizi sıralı değilse, aranan ilk elemanda olabilir, son eleman da. En kötü durumda N elemanlı dizide algoritmanın karmaşıklığı O(n) dir. Büyük boyutlu dizilerde kullanımı uygun değildir.

Doğrusal Arama (Linear Search)

Doğrusal Arama (Linear Search)

İkili Arama (Binary Search) Doğrusal arama küçük boyutlu veya sıralanmamış dizilerde uygulanabilir. Ancak büyük boyutlu dizilerde doğrusal arama verimli değildir. Eğer dizi sıralanmış ise yüksek hızlı olan ikili arama kullanılabilir. İkili arama her karşılaştırmadan sonra sırlanmış dizinin bir tarafını değerlendirmeden eler.

İkili Arama (Binary Search) Algoritma, dizinin ortasında yer alan elemanı aranan ile karşılaştırır. Eğer eşit ise aranan bulunmuş olur. Eğer aranan < ortadaki ise aramayı dizinin ilk yarısında sürdür. Eğer aranan > ortadaki ise aramayı dizinin diğer yarısında sürdür. Aranan, ortadakine eşit olana kadar ya da alt dizide aranana eşit olmayan tek bir eleman kalana kadar bu işlemleri tekrarla.

İkili Arama (Binary Search)

İkili Arama (Binary Search)

İkili Arama (Binary Search) Çok hızlıdır. 2 n > eleman sayısı ise en fazla n adımda biter. 30 elemanlı dizide arama 5 adımda biter ( 2 5 > 30 ) En kötü senaryoda 1023 elemanlı bir dizide arama sadece 10 karşılaştırma sürer. 1024 ü tekrarlı bir şekilde 2 ile bölersek 512, 256, 128, 64, 32, 16, 8, 4, 2 ve 1 elde ederiz. 1024 (2 10 ) 2 ile sadece 10 kez bölündüğünde 1 elde edilir. İkili aramada 2 ile bölme bir karşılaştırmaya denktir.

İkili Arama (Binary Search) 1048576 (2 20 ) elemanlı dizide en fazla 20 adımda aranan bulunur 1 milyar elemanlı dizide en fazla 30 karşılaştırmada aranan bulunur. Doğrusal aramaya göre inanılmaz bir performans artışı vardır. Doğrusal arama ortalama dizideki elemanların yarısı ile karşılaştırma yapar. 1 milyar eleman düşünüldüğünde bu fark 30 karşılaştırma ile 500 milyon karşılaştırma arasındaki farktır.

Kaynaklar Paul J. Deitel, C How to Program, Harvey Deitel. Kaan Aslan, A dan Z ye C Klavuzu 8. Basım, Pusula Yayıncılık, 2002. 24