Skip to content
SefaKartavPublic

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

21 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Push_swap

"Because Swap_push doesn't feel as natural"

This project has been created as part of the 42 curriculum by sekartav and fakartal.


Description

Push_swap, iki yığın (stack A ve stack B) ve sınırlı bir işlem seti kullanarak verilen sayı dizisini en az hamle ile küçükten büyüğe sıralamayı amaçlayan bir algoritma projesidir. Bu proje, algoritmik karmaşıklığı (Big-O) somut bir şekilde anlamak ve veri setinin durumuna göre en uygun stratejiyi seçmek üzerine kurgulanmıştır.


Instructions

Compilation

Proje, -Wall -Wextra -Werror bayraklarıyla derlenen bir Makefile içerir. Derlemek için:

make

Execution

Program, tam sayı listesini argüman olarak alır. Çıktı olarak sıralama için gereken işlemleri (sa, pb, ra vb.) ekrana yazdırır.

./push_swap 4 67 3 87 23

Available Flags

Flag Açıklama
--simple O(n²) Selection Sort stratejisini zorlar
--medium O(n√n) Chunk-based stratejisini zorlar
--complex O(n log n) Radix Sort stratejisini zorlar
--adaptive Disorder metriğine göre otomatik seçim yapar (Varsayılan)
--bench Performans istatistiklerini ve işlem sayılarını stderr üzerinden gösterir

Algorithms and Complexity Justification

1. Simple Algorithm: Selection Sort — O(n²)

Strateji: Stack A'daki minimum değeri bulup en üste taşır ve Stack B'ye atar. Tüm elemanlar bitene kadar tekrarlanır, sonra Stack A'ya geri itilir.

2. Medium Algorithm: Chunk-Based Sort — O(n√n)

Strateji: Veri seti √n boyutunda parçalara (chunks) ayrılır. Sayılar ait oldukları parça aralığına göre Stack B'ye itilirken kendi içinde rotasyonlarla optimize edilir.

3. Complex Algorithm: Radix Sort — O(n log n)

Strateji: Sayılar öncelikle 0'dan N-1'e kadar indekslenir. Bitwise (bit düzeyinde) işlemler kullanılarak ikili tabanda sıralama yapılır. log n basamak sayısı kadar işlem garantisi sağlar.

4. Custom Adaptive Algorithm

Program, başlangıç yığınının Disorder Metric (Düzensizlik Ölçümü) değerini hesaplar:

Düzensizlik Değeri Seçilen Algoritma
< 0.20 Basit O(n²)
0.20 ≤ değer < 0.50 Orta O(n√n)
≥ 0.50 Karmaşık O(n log n)

Resources & AI Usage

Resources

  • Push_swap Subject PDF (Version 1.1)
  • Donald Knuth — Big-O Notation Theory
  • Radix Sort and Bitwise Optimization Documentation

AI Usage

Bu projede yapay zeka (Google Gemini), 42 AI talimatlarına uygun olarak şu alanlarda kullanılmıştır:

  • Mimari Tasarım: Global değişken yasağını ihlal etmeden --bench modu için statik takipçi yapısının kurgulanması.
  • Hata Yönetimi: ft_printf kütüphanesinin hata çıktılarını (stderr) yönlendirme mantığının hata ayıklanması.
  • Dökümantasyon: Bu README dosyasının konu dökümanındaki (subject) gereksinimlere tam uyumu.

Not: Hiçbir sıralama mantığı veya algoritma çekirdeği kopyala-yapıştır yapılmamıştır; AI sadece yapısal rehberlik için kullanılmıştır.


Group Contributions

Üye Katkılar
sekartav Makefile yapısı, ft_printf entegrasyonu, Radix Sort ve Chunk-based algoritmalarının implementasyonu
fakartal Parsing mantığı, Disorder Metric hesaplama fonksiyonu, Selection Sort ve test senaryolarının oluşturulması

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages