VERİ YAPILARI VE PROGRAMLAMA (BTP104)

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

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

VERİ YAPILARI VE PROGRAMLAMA

BIP116-H14-1 BTP104-H014-1

VERİ YAPILARI VE PROGRAMLAMA

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

ELEKTRİK MAKİNELERİ (MEP 112) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

ANADOLU ÜNİVERSİTESİ AÇIKÖĞRETİM FAKÜLTESİ İLKÖĞRETİM ÖĞRETMENLİĞİ LİSANS TAMAMLAMA PROGRAMI. Analiz. Cilt 2. Ünite 8-14

MEKATRONİĞE GİRİŞ (EEP251)

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İ

Algoritmalar ve Karmaşıklık

ELEKTRİK MAKİNELERİ (MEP 112) (ELP211) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

ELEKTRİK MAKİNELERİ (MEP 112) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

EIS526-H02-1 GİRİŞİMCİLİK (EIS526) Yazar: Doç.Dr. Serkan BAYRAKTAR

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

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

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);

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

Dr. Fatih AY Tel: fatihay@fatihay.net

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr.Gör. Hakan TUNAHAN S1

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

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr.Gör. Hakan TUNAHAN S1

ALGORİTMA VE PROGRAMLAMA I

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

ELEKTRİK MAKİNELERİ (MEP 112 (ELP211) ) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

YÖNETİM BİLİŞİM SİSTEMLERİ

ELEKTRİK MAKİNELERİ (MEP 112 (ELP211) ) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

ALGORİTMA VE PROGRAMLAMA I

f(x) ve g(x) reel sayılarda tanımlı iki fonksiyon olmak üzere, x > k olacak şekilde bir k vardır öyle ki,

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

İŞLETMELERDE BİLİŞM SİSTEMLERİ (EMBA523) Yazar: Prof.Dr. Orhan TORKUL S1

Algoritma Analizi. Özelliklerinin analizi Algoritmanın çalışma zamanı Hafızada kapladığı alan

ALGORİTMA İ VE PROGRAMLAMA

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

T.C. ANADOLU ÜNİVERSİTESİ YAYINI NO: 3275 AÇIKÖĞRETİM FAKÜLTESİ YAYINI NO: 2138 HAVACILIK EMNİYETİ

Özyineleme (Recursion)

ANADOLU ÜNİVERSİTESİ AÇIKÖĞRETİM FAKÜLTESİ İLKÖĞRETİM ÖĞRETMENLİĞİ LİSANS TAMAMLAMA PROGRAMI. Lineer. Cebir. Ünite

Alıştırma 1: Yineleme

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

İŞLETMELERDE BİLİŞİM SİSTEMLERİ (EMBA523)

EIS526 -H01-1 GİRİŞİMCİLİK (EIS526) Yazar: Doç.Dr. Serkan BAYRAKTAR

YZM 2116 Veri Yapıları

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

3. Bölüm Algoritmalar

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr.Gör. Hakan TUNAHAN S1

Algoritma Geliştirme ve Veri Yapıları 1 Temel Algoritma Kavramları. Mustafa Kemal Üniversitesi

O NOTASYONU. Abdullah Gazi Emre DAĞLI

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

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Matlab da Dizi ve Matrisler. Mustafa Coşar

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr.Gör. Hakan TUNAHAN S1

Algoritma Analizi Big O

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

Internet Programming I. Hafta III. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

ELEKTRİK MAKİNELERİ (MEP 112 (ELP211) ) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

HSancak Nesne Tabanlı Programlama I Ders Notları

VERİ YAPILARI DERS NOTLARI BÖLÜM 2 ALGORİTMA ANALİZİ. Yard. Doç. Dr. Deniz KILINÇ

Algoritmalar ve Programlama. Algoritma

ELEKTRİK MAKİNELERİ (MEP 112 (ELP211) ) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

ELEKTRİK MAKİNELERİ (MEP 112) (ELP211) Yazar: Yrd. Doç. Dr. Mustafa Turan S1 SAKARYA ÜNİVERSİTESİ Adapazarı Meslek Yüksekokulu

VERİ YAPILARI DATA STRUCTURE GİRİŞ

FIRTINA SERİSİ MATEMATİK SORU BANKASI 5

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

EM205 26/9/2014. Programlamaya giriş Algoritmalar. Amaçlar

BIL222 Veri Yapıları ve Algoritmalar

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

İnternet Programcılığı Öğr. Gör. Serkan AKSU PHP de Dizi-Değişkenler, Nesneler. Dizi Oluşturma. Tek Boyutlu Diziler

YÖNETİM BİLİŞİM SİSTEMLERİ

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr.Gör. Hakan TUNAHAN S1

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ü

İstatistik ve Olasılık

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

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

Günümüz bilgi toplumunda bilgisayar, her alanda kendine yer edinmiş ve insana, bir çok işlemde yardımcı olarak büyük kolaylık sağlamaktadır.

Algoritmalar, Akış Şemaları ve O() Karmaşıklık Notasyonu

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

Veritabanı Yönetim Sistemleri I

Prof. Dr. Mahmut Koçak.

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

Fonksiyon Optimizasyonunda Genetik Algoritmalar

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

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Algoritma ve Akış Diyagramları

ÜNİT E ÜNİTE GİRİŞ. Algoritma Mantığı. Algoritma Özellikleri PROGRAMLAMA TEMELLERİ ÜNİTE 3 ALGORİTMA

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

ALGORİTMA VE PROGRAMLAMA I

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Ünite-3 Bilgisayar Yazılımı.

How to ASP Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. 29 Eki. 1 Kas. 2013

C PROGRAMLAMA D İ L İ

How to ASP Language. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. Hafta V

PROGRAMLAMAYA GİRİŞ VE ALGORİTMA «YTÜROK» EĞİTMEN:REHA ÖZGÜR ŞİMŞEK

EIS526 H10-1 GİRİŞİMCİLİK (EIS526) Yazar: Doç.Dr. Serkan BAYRAKTAR

EIS526 H13-1 GİRİŞİMCİLİK (EIS526) Yazar: Doç.Dr. Serkan BAYRAKTAR

Veri Yapıları Laboratuvarı

C PROGRAMLAMA YRD.DOÇ.DR. BUKET DOĞAN PROGRAM - ALGORİTMA AKIŞ ŞEMASI

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

Transkript:

VERİ YAPILARI VE PROGRAMLAMA (BTP104) Yazar: Doç.Dr.İ.Hakkı.Cedimoğlu

SAKARYA ÜNİVERSİTESİ Adapazarı Meslek Yüksekokulu Bu ders içeriğinin basım, yayım ve satış hakları Sakarya Üniversitesi ne aittir. "Uzaktan Öğretim" tekniğine uygun olarak hazırlanan bu ders içeriğinin bütün hakları saklıdır. İlgili kuruluştan izin almadan ders içeriğinin tümü ya da bölümleri mekanik, elektronik, fotokopi, manyetik kayıt veya başka şekillerde çoğaltılamaz, basılamaz ve dağıtılamaz. Copyright 2008 by Sakarya University All rights reserved No part of this course contenet may be reproduced or stored in a retrieval system, or transmitted in any form or by any means mechanical, electronic, photocopy, magnetic, tape or otherwise, without permission in writing from the University. Sürüm 1 Sakarya 2008 S 1

Algoritma Analizi, Algoritmalarda Karmaşıklık ve Zaman Karmaşıklığı Bu Haftanın Hedefi: Kullanılan semboller Animasyon Soru Veritabanı Bağlantılı Soru Simülasyon Püf Noktası 1

VERİ YAPILARI Bir problemin çözümünde kullanılan komutlar dizisine algoritma adı verilir. Algoritma, bir problemi çözmek için geliştirilmiş kesin bir yöntemdir. Bir algoritma, programlama dillerine (C, Pascal gibi) uygulandığında program adını alır. Algoritmalar tarafından işlenen en temel elemanlara (sayısal bilgiler, metinsel bilgiler, resimler, sesler, vb.) veri adı verilir. Bir algoritmanın etkin, anlaşılır ve doğru olabilmesi için algoritmanın işleyeceği verilerin düzenlenmesi gerekir. Verilerin düzenlenme biçimini belirleyen yapıtaşlarına veri yapıları denir. Bir program değişkeni bile basit bir veri yapısı olarak kabul edilebilir. Değişik algoritmalarda verilerin diziler, yığınlar, kuyruklar ve ağaçlar gibi veri yapıları şeklinde düzenlenmesi gerekebilir. Bir programda veri, yapı ve algoritma, önemli ve birbirlerinden ayrılmaz bileşenlerdir. Verilerin düzenlenme biçimleri de önemlidir. Çünkü, yapı iyi tasarlandığında, etkin, anlaşılır, doğru ve hızlı çalışıp az kaynak kullanan algoritma geliştirmek kolaylaşır. ALGORİTMA ANALİZİ Algoritmalar tarafından kullanılan bilgisayar kaynaklarının (işletim süresi, bellek miktarı vb.) önemli olduğu uygulamalarda etkili algoritmalar geliştirmek şarttır. Algoritmaları analiz etmenin en önemli nedenlerinden biri, çeşitli uygulamalarda algoritmanın uygunluğu'nu ifade edebilmek için algoritmanın niteliğini (karakteristiğini) bilmek yada bir algoritmayı diğerleri ile karşılaştırmak isteğidir. Nitelikler, daha çok bilgisayar kaynakları olan zaman ve bellek ile alakalıdır. Bir başka deyişle, belirli bir algoritmanın işletimi için bilgisayar ortamında ne kadar süreye ve belleğe gereksinim olduğu önemlidir. Bir problemin çözümünde, kullanılabilecek olan algoritmalardan en etkin olanı seçilmelidir. En kısa sürede çözüme ulaşan veya en az işlem yapan algoritma tercih edilmelidir. Daha kısa zaman alan bir algoritma yazmak için daha çok kod yazmak veya daha çok bellek kullanmak gerekebilir. Bazı durumlarda da en az bellek harcayan algoritmanın kullanılması gerekebilir. Algoritma analizinin, algoritmanın oluşturulmasından bağımsız olarak yapılması kolay değildir. Derleyici özellikleri, bilgisayar mimarisi, gerçekleştirim kalitesi ve benzeri konular elbette algoritmanın performansını etkiler. Fakat, analiz süreci, söz konusu etkenleri ve programlama ortamının olası tüm avantajlarını tanımamıza da fırsat verir. Algoritmaları yaptıkları iş açısından karşılaştırmak için her algoritmaya uygulanabilecek somut ölçüler oluşturulmalıdır. Aynı işi yapan algoritmalardan daha az işlemle sonuca ulaşanın yani daha hızlı olanın belirlenmesi gerekir. İlk çözüm; algoritmaları bir programlama dilinde kodlayıp her iki programı da çalıştırarak işletim sürelerini karşılaştırmaktır. Bu yöntemde işletim süreleri belirli bir bilgisayara özeldir ve işletim süresi de bu bilgisayara bağlıdır. Daha genel bir ölçüm yapabilmek için tüm bilgisayarlar üzerinde algoritmanın çalıştırılması gerekir. İkinci çözüm; işletilen komut ve deyimlerin sayısını bulmaktır. Fakat bu ölçüm kullanılan programlama diline göre ve programcıların stiline göre değişim gösterebilir. Bunun yerine algoritmadaki kritik geçişlerin sayısı hesaplanabilir. Her tekrar için yapılan iş ve süre sabitse, bu ölçü anlamlı hale gelir. Buradan, algoritmanın temelinde yatan bir işlemi ayırarak, bu işlemin kaç kere tekrarlandığını bulma düşüncesi doğmuştur. 2

Bir tamsayı dizisindeki tüm elemanların toplamını hesaplama işleminde, gerekli olan iş miktarını ölçmek için tamsayı toplama işlemlerinin sayısının bulunması örnek olarak verilebilir. 100 elemanlı bir dizideki elemanların toplamını bulmak için 99 toplama işlemi yapılmalıdır. n elemanlı bir listedeki elemanların toplamını bulmak için n-1 toplama işlemi yapmak gerekir diye genelleştirme yapabiliriz. Böylece algoritmaları karşılaştırırken belirli bir dizi boyutu ile sınırlı kalınmaz. İŞLETİM ZAMANI (RUNNING TIME) KARMAŞIKLIĞI İşletim, zamanın girdi boyutunun bir fonksiyonu olarak ele alınmasıdır. Tüm girdilerin tek değere indirilmesi, değişik algoritmaları karşılaştırmayı kolaylaştırır. En yaygın karmaşıklık ölçüleri En Kötü Durum İşletim Süresi (Worst-Case Running Time) ve Ortalama Durum İşletim Süresi (Average-Case Running Time)'dir. En Kötü Durum İşletim Süresi (Worst-Case Running Time): Bu işletim süresi, her girdi boyutundaki herhangi bir girdi için en uzun işletim süresini bildirir. Bir programın en kötü ihtimalle ne kadar süreceğinin tahmin edilmesi istenen bir durumdur. Örnek olarak n elemanlı bir listede sıralı arama en kötü ihtimalle (aranan bulunamazsa) n karşılaştırma gerektirecektir. Yani En Kötü Durum İşletim Süresi T(n) = n'dir. Tüm problemlerde sadece en kötü girdi dikkate alındığı için en kötü durum işletim süresi değerini hesaplamak göreceli olarak kolaydır. Ortalama Durum İşletim Süresi (Average-Case Running Time): Bu işletim süresi, her girdi boyutundaki tüm girdilerin ortalamasıdır. n elemanın her birinin aranma olasılığının eşit olduğu varsayıldığında ve liste dışından bir eleman aranmayacağı varsayıldığında ortalama işletim süresi (n+1)/2'dir. Liste dışından bir elemanın da aranma durumu hesaba katıldığında ortalama işletim süresi [(n+1)/2, n] aralığındadır (aranan elemanların listede olma eğilimine bağlı olarak). Ortalama durum analizi basit varsayımlar yapıldığında bile zordur ve varsayımlar da gerçek performansın iyi tahmin edilememesine neden olabilir. ZAMAN KARMAŞIKLIĞI Zaman karmaşıklığı, girdi boyutu sonsuza yaklaşırken işletim süresinin artışını temsil eder. Yapılan işi, girdi boyutunun bir fonksiyonu olarak hesaplamaya benzer. Aralarındaki fark girdi boyutunun büyük olduğunu kabul ederek, fonksiyonda en hızlı artış gösteren terimin belirlenmesidir. Bu fonksiyon yaklaşımı matematiksel gösterim kullanarak Big-O gösterimi veya Zaman Karmaşıklığı olarak ifade edilir. Örnek olarak : f(n) = n 4 + 100n 3 + 50n 2 + 20n + 60 = O(n 4 ) fonksiyonunda n'in derecesi n 4 'tür, yani n'in büyük değerleri için fonksiyonu en fazla n 4 etkiler. n'in çok büyük değerleri için n 4, 100n 3 'den, 50n 2 'den 20n'den ve 60'den çok büyük olacağından daha düşük 3

dereceli terimler dikkate alınmayabilir. Bu diğer terimlerin, işlem süresini etkilemedikleri anlamına gelmez; bu yaklaşım yapıldığında n'in çok büyük değerlerinde önem taşımadıkları anlamına gelir. f(n) = 100n 3 + 50n 2 + 20n + 60 = O(n 3 ) fonksiyonunda benzer mantıkla n'in derecesi n 3 'tür. Burada ilk bakışta, n 3 'ün önündeki 100 çarpanının etkisi n'in büyük değerleri için fazla olduğu düşünülebilir, fakat burada belirtilmek istenen fonksiyonun kübik bir şekilde arttığıdır. Bu yüzden n'in büyük değerleri için fonksiyonu en fazla n 3 etkiler diyebiliriz. Yukarda verilen fonksiyonlardaki n, problemin boyutudur. Dizi, yığın, kuyruk, bağlantılı liste, ağaç gibi veri yapılarında eleman sayılarıdır. Zaman karmaşıklığı hesaplamada aşağıdaki kurallar uygulanır; 1. Tek satırlık, dizinin boyutuyla ilişkisi olmayan komutlar O(1) zamanı alır. 2. Döngüler içerdikleri döngü komutlarının belli bir şarta kadar icrasını sağlarlar, bu şart genelde dizi boyutu ile ilişkili olduğundan O(n) zamanı alır. (n = dizi boyutu) 3. İçiçe döngüler zaman karmaşıklıklarının çarpılması şeklinde hesaplanır. Birinci döngü icra sayısı n, ikinci döngü m ise, O(nxm); ikisi de n ise O(n 2 ) zamanı alır. 4. Ardarda döngüler zaman karmaşıklıklarının toplanması şeklinde hesaplanır. 5. If-then-else gibi şartlı yapılarda iki koşuldan zaman karmaşıklığı yüksek olan alınır. 6. Her bir icra, problemi dizi boyutunun yarısı şeklinde ikiye bölüyorsa, zaman karmaşıklığı O(log 2 n) değerini alır. Not 1: Katsayısı daha küçük olan zaman karmaşıklıklarının ihmal edileceği unutulmamalıdır. (O(n+n 2 ) = O(n 2 ) gibi) Not 2: Büyüklük değerlerinin önlerindeki sabit çarpanlar önemsenmez. (O(6n) = O(n) gibi) ZAMAN KARMAŞIKLIĞI Örnek: 4

2. satırdaki komutun icrası O(1) zamanı alır. 1. satırda başlayan ve 3. satırda biten for döngüsü dizinin boyutu (n) kadar icra sağlar, dolayısıyla O(n) zamanı alır. İçindeki komutlar O(1) olduğundan O(nx1) = O(n) zamanı alır. 6. satırdaki komutun icrası O(1) zamanı alır. 5. satırda başlayan ve 7. satırda biten for döngüsü dizinin boyutu (n) kadar icra sağlar, dolayısıyla O(n) zamanı alır. İçindeki komutlar O(1) olduğundan O(nx1) = O(n) zamanı alır. 4. satırda başlayan ve 8. satırda biten for döngüsü dizinin boyutu (n) kadar icra sağlar, dolayısıyla O(n) zamanı alır. İçindeki komutlar O(n) olduğundan O(nxn) = O(n 2 ) zamanı alır. 1. satırdan 8. satıra kadar programın icrası incelendiğinde, 1-3 satırları arasında O(n), 4-8 satırları arasında O(n 2 ) zamanı aldığını söyleyebiliriz. Toplam zaman ise (ardarda döngüler) O(n+ n 2 ) = O(n 2 ) şeklinde ifade edilir. Örnek: 4, 5 ve 6. satırdaki komutların icrası O(1) zamanı alır. 3. satırda başlayan ve 7. satırda biten if yapısı tek bir karşılaştırma ve bu karşılaştırmaya bağlı olarak 3 tane O(1) zamanı (karşılaştırma doğru ise) veya O(0) zamanı (karşılaştırma yanlış ise) alır. Yani toplam olarak O(1) zamanı alır. 2. satırda başlayan ve 8. satırda biten for döngüsü dizinin boyutu (n) kadar icra sağlar, dolayısıyla O(n) zamanı alır. İçindeki komutlar O(1) olduğundan O(nx1) = O(n) zamanı alır. 1. satırda başlayan ve 9. satırda biten for döngüsü dizinin boyutu (n) kadar icra sağlar, dolayısıyla O(n) zamanı alır. İçindeki komutlar O(n) olduğundan (içiçe döngüler) O(nxn) = O(n 2 ) zamanı alır. Toplam zaman O(n 2 ) şeklinde ifade edilir. 5

BAŞLICA ZAMAN KARMAŞIKLIĞI DEĞERLERİ VE İNCELENMESİ O(1) : Sabit zaman Örnek : n elemanlı bir dizinin i. elemanına bir değer atanması O(1)'dir. Çünkü bir elemana indisinden doğrudan erişilmektedir. O(n) : Doğrusal zaman Örnek : n elemanlı bir dizinin tüm elemanlarının ekrana yazdırılması O(n)'dir. O(log 2 n) : Logaritmik zaman, O(1)'den fazla O(n)'den azdır. Örnek : Sıralı bir listenin elemanları içinde ikili arama (binary search) uygulanarak belirli bir değerin aranması O(log 2 n)'dir. O(n 2 ) : Karesel zaman Örnek : Basit sıralama algoritmalarının birçoğu (seçerek sıralama (selection sort) gibi) O(n 2 )'dir. O(n.log 2 n) : Bazı hızlı sıralama algoritmaları (birleşmeli sıralama (merge sort) gibi) O(n.log 2 n)'dir. O(n 3 ) : Kübik zaman Örnek : Üç boyutlu bir tamsayı tablosundaki her elemanın değerini artıran algoritma. O(2 n ) : Üstel zaman, çok büyük değerlere ulaşır. Değişik artış fonksiyonlarının aldıkları değerlere göre zaman karmaşıklıkları aşağıdaki tabloda gösterilmiştir; 6

BAŞLICA ZAMAN KARMAŞIKLIĞI DEĞERLERİ VE İNCELENMESİ Yukarıdaki tablodaki fonksiyonlardan elde edilmiş grafik aşağıda görülmektedir; Buradaki tablo ve grafikteki sonuçlar, dizi boyutu büyük olan problemlerde, O(n 3 ), O(2 n ), O(n 2 ) vb. zaman karmaşıklığına sahip algoritmaların oldukça yavaş sonuç ürettiklerini göstermektedir. Dizi boyutu fazla olan problemlerin çözümünde, zaman karmaşıklığı parabol şeklinde olan algoritmaları kullanmaktan kaçınmak, mümkünse O(n.log 2 n) zaman karmaşıklığını geçmemeye dikkat etmek gerekir. 7