Bölüm 20: İleri Sıralama Algoritmaları

Quick, merge, heap, radix ve alt sınır
Quick sortBölümlemeMerge sortHeap sortRadix sortAlt sınır
C ile Veri Yapıları · İki ciltlik ders notları temel alınmıştır

Hazırlık

Başlamadan Önce

C ön bilgisi

Dizi, gösterge, struct, fonksiyon ve dinamik bellek temellerini hatırla.

İlk kavram

Quick sort ve Bölümleme

Bu bölümün hedefi

Pivot çevresinde küçük ve büyük öğeleri ayırmak.

Başlangıç sorusu

Quick sort ne zaman O(n²) olur?

Giriş

Öğrenme Çıktıları

Quick sort bölümlemek

Pivot çevresinde küçük ve büyük öğeleri ayırmak.

Merge sort birleştirmek

İki sıralı yarıyı doğrusal zamanda birleştirmek.

Heap sort uygulamak

Kökü sona taşıyıp heap boyutunu küçültmek.

Alt sınırı açıklamak

Karşılaştırmalı sıralamada Ω(n log n) sınırını karar ağacıyla yorumlamak.

Temel Kavramlar

Hızlı sıralamalar problemi yapılandırır

Quick sort bölümlere ayırır, merge sort sıralı parçaları birleştirir, heap sort öncelik yapısını kullanır.

Quick

Yerinde ve pratikte hızlı; kötü pivot riski.

Merge

Kararlı ve garantili n log n; ek dizi ister.

Heap

Yerinde ve kötü durumda n log n; kararlı değildir.

Radix

Basamakları kararlı ara sıralamayla işler.

Temel Kavramlar

Kavram Haritası

1Quick sort
2Bölümleme
3Merge sort
4Heap sort
5Radix sort
6Alt sınır
Quick sort bölümlere ayırır, merge sort sıralı parçaları birleştirir, heap sort öncelik yapısını kullanır.

Gösterim

Böl ve yönet ağacı

n
↙      ↘
n/2n/2
↙ ↘    ↙ ↘
n/4n/4n/4n/4
log n düzeyin her birinde toplam O(n) iş: O(n log n).

C ile Gerçekleştirim

Genel sıralama arayüzü

void quick_sort(int a[], int sol, int sag);
void merge_sort(int a[], int gecici[], int sol, int sag);
void heap_sort(int a[], size_t n);
void radix_sort(unsigned a[], size_t n);
Tür tanımı veri yapısının bellekteki biçimini; yordamlar ise bu yapı üzerindeki davranışı kurar.

C ile Gerçekleştirim

C'de Bellek ve Sahiplik

Sahip kim?

Ayrılan belleği hangi yapı veya yordamın bırakacağını baştan belirle.

Yaşam süresi

Yerel değişken adresini fonksiyon dışına taşırma; dinamik belleği gerektiği kadar yaşat.

Sınırlar

Boyut, kapasite ve geçerli indisleri her işlemde koru.

Boş durum

NULL, boş yapı ve tek öğe durumlarını özellikle quick sortta eşit anahtarlarla sonsuz tarama riskiyle birlikte test et.

Temel İşlemler

Merge adımı

while (i <= orta && j <= sag)
    tmp[k++] = (a[i] <= a[j]) ? a[i++] : a[j++];
while (i <= orta) tmp[k++] = a[i++];
while (j <= sag) tmp[k++] = a[j++];
for (i = sol; i <= sag; ++i) a[i] = tmp[i];
Kod örnekleri C99/C11 uyumlu olacak biçimde küçük ve tek sorumluluklu tutulmuştur.

Temel İşlemler

Kodu Okurken

Ön koşul

Quick sort ne zaman O(n²) olur?

Değişmez

Her adımda quick kuralı korunuyor mu?

Son koşul

İki sıralı yarıyı doğrusal zamanda birleştirmek.

Hata yolu

Merge sınırlarında bir öğeyi atlamak

Adım Adım

Quick sort bölümleme

Pivot seç

Bir bölme elemanı belirle.

Soldan tara

Pivotdan küçükler doğru tarafta kalana kadar ilerle.

Sağdan tara

Pivotdan büyükler doğru tarafta kalana kadar gerile.

Böl

Yanlış taraftaki öğeleri değiştir; alt dizileri özyineli sırala.

Sınıf Notu

Dersten Sesler

“Quick sort neden en hızlılardan biri? İşin sırrı bölümleme mantığında.”
“Yordamın iki mergesort satırını değiştirin; ortaya çıkan tabloyu gözlemleyin.”

Notlardaki sınıf içi anlatımdan, yazım ve uzunluk bakımından sunuma uyarlanmıştır.

Analiz

Karmaşıklık Özeti

İşlemZamanEk bellek
Quick, ortalamaO(n log n)O(log n)
Quick, kötüO(n²)O(n)
MergeO(n log n)O(n)
HeapO(n log n)O(1)
RadixO(d(n+k))O(n+k)

n: öğe sayısı · h: yükseklik · V: düğüm sayısı · E: kenar sayısı

Tasarım Kararı

Hangi Durumda Hangisi?

Quick

Genel amaçlı, yerinde ve iyi pivot stratejisiyle.

Merge

Kararlılık, bağlı liste veya dış sıralama gerektiğinde.

Heap

Kötü durum garantisi ve O(1) ek alan istendiğinde.

Radix

Sabit basamaklı tamsayı/dize anahtarlarında.

Dikkat

Sık Yapılan Hatalar

1Quick sortta eşit anahtarlarla sonsuz tarama
2Merge sınırlarında bir öğeyi atlamak
3Heap boyutu ile dizi boyutunu karıştırmak
4Radix ara sıralamasını kararsız seçmek

Alıştırmalar

Kendini Sına

  1. Quick sort ne zaman O(n²) olur?
  2. Merge sort neden kararlıdır?
  3. Heap sort neden ek dizi istemez?
  4. Radix sort hangi koşulda etkilidir?
  5. Karşılaştırmalı sıralamanın alt sınırı nedir?
Cevapları göster
  1. Bölümler sürekli çok dengesiz olduğunda.
  2. Birleştirmede eşitlikte soldaki öğeyi önce aldığı için.
  3. Heap dizinin kendi içinde tutulur.
  4. Basamak sayısı ve basamak alfabesi sınırlıysa.
  5. Ω(n log n).

Uygulama

Mini Laboratuvar

1 · Çiz

Quick sort ne zaman O(n²) olur?

2 · Kodla

Heap sort neden ek dizi istemez?

3 · Ölç

Karşılaştırmalı sıralamanın alt sınırı nedir?

Teslim: küçük bir C modülü, üç uç test ve zaman/bellek karmaşıklığı tablosu.

Özet

Bölüm Özeti

Bölümleme

Quick sort performansının kalbidir.

Birleştirme

Merge sort garantili ve kararlıdır.

Modeli veriye uydur

Alan, kararlılık ve anahtar yapısı seçimi belirler.

Özet

Kaynaklar ve Devam

Son

Bölüm 20: İleri Sıralama Algoritmaları
Ders planına dön
1 / 1 C ile Veri Yapıları

← → veya boşluk ile gezinin · F: tam ekran · Home/End: ilk/son slayt