Skip to content

This project aims to develop the most efficient algorithm to sort a sequence of numbers in the fewest steps possible. The sorting process is optimized using stack data structures, and data is transferred between two stacks. Various sorting algorithms (Bubble Sort, Quick Sort, etc.) are evaluated to select the most suitable one. The project provides

Notifications You must be signed in to change notification settings

deryaxacar/42-Push_swap

Repository files navigation

42 - Push_swap 🧮

Bu proje, bir dizi sayıyı en az adımda sıralamak için en verimli algoritmayı geliştirmeyi amaçlar. Yığın (stack) veri yapıları kullanarak sıralama işlemi optimize edilir ve veriler iki yığın arasında taşınır. Çeşitli sıralama algoritmaları (Bubble Sort, Quick Sort, vb.) değerlendirilir ve en uygun algoritma seçilir. Proje, algoritma tasarımı ve veri yapılarının etkin kullanımında bilgi sağlar ve performans avantajları sunar. 🔍📊

Projenin Amacı 🎯

Push_swap projesinin temel amacı, belirli bir sayı dizisini en az adımda sıralamak için en etkili algoritmayı geliştirmektir. Bu hedefe ulaşmak için projede yığın (stack) veri yapıları ve çeşitli sıralama algoritmaları kullanılır.

Yığın veri yapıları, sıralama sürecinde verilerin düzenlenmesi ve yönetilmesinde kritik bir rol oynar. Bu veri yapıları, "son giren, ilk çıkan" (LIFO) prensibine göre çalışır ve sıralama algoritmalarının etkinliğini artırmak için kullanılır. İki ayrı yığın kullanarak, veriler bir yığından diğerine taşınır, böylece sıralama işlemi daha verimli ve düzenli hale gelir.

Projede, sıralama algoritmalarının performansı detaylı bir şekilde analiz edilir. Basit algoritmalardan (Bubble Sort, Insertion Sort) daha karmaşık algoritmalara (Quick Sort, Merge Sort) kadar çeşitli yöntemler uygulanır ve her birinin avantajları ile dezavantajları değerlendirilir. Bu analiz, hangi algoritmanın en verimli olduğunu belirlemek için yapılır ve sonuçta en iyi performansı sağlayan algoritma seçilir.

Push_swap, algoritma tasarımı, veri yapıları ve performans optimizasyonu konularında derinlemesine bilgi edinmeyi sağlar. Yığın veri yapılarının etkin kullanımı ve sıralama algoritmalarının performansını artırmak, yazılım geliştirme süreçlerinde önemli beceriler kazandırır. Proje, sıralama işlemlerinde verimlilik ve performans açısından gerçek dünya uygulamalarında önemli avantajlar sunar.

Temel Hedefler 📈

  • Verimli Sıralama: Verilen sayı dizisini en az adımda sıralayabilen bir algoritma geliştirmek.
  • Yığın Kullanımı: İki ayrı yığın kullanarak sıralama algoritmalarını uygulamak.
  • Algoritma Optimizasyonu: Sıralama işlemi için en uygun algoritmayı bulmak ve uygulamak.

Kullanılan Komutlar 💡

Push_swap projesinde kullanılan bazı temel komutlar şunlardır:

  • sa: İlk iki öğeyi a yığında takas eder. 🔄
  • sb: İlk iki öğeyi b yığında takas eder. 🔄
  • pa: b yığından a yığına bir öğe taşır. ↔️
  • pb: a yığından b yığına bir öğe taşır. ↔️
  • ra: a yığındaki tüm öğeleri bir pozisyon döndürür. 🔁
  • rb: b yığındaki tüm öğeleri bir pozisyon döndürür. 🔁
  • rra: a yığındaki tüm öğeleri bir pozisyon geri döndürür. 🔙
  • rrb: b yığındaki tüm öğeleri bir pozisyon geri döndürür. 🔙
  • rr: Hem a hem de b yığınlarını bir pozisyon döndürür. 🔁🔁
  • rrr: Hem a hem de b yığınlarını bir pozisyon geri döndürür. 🔙🔙

Bu komutlar, sıralama algoritması içinde yığınları yönetmek ve verileri taşımak için kullanılır.

Gereksinimler 📋

Push_swap projesini çalıştırmak için aşağıdaki gereksinimlerin sağlanması gerekir:

  • Unix tabanlı bir işletim sistemi (Linux, macOS) 🖥️
  • GCC derleyici 🛠️

Kurulum 🔧

Projeyi yerel bir makinede çalıştırmak için aşağıdaki adımları izleyin:

  1. Repoyu yerel makinenize klonlayın: git clone https://github.com/username/push_swap.git
  2. Proje dizinine gidin: cd push_swap
  3. Projeyi derlemek için Makefile'ı çalıştırın: make

Kullanım 🗸

Sıralama işlemi için aşağıdaki adımları izleyin:

  1. Programı çalıştırın ve sıralamak istediğiniz sayıları argüman olarak girin:
    ./push_swap [sayı1] [sayı2] [sayı3] ...
    

Bu README dosyası Derya ACAR tarafından hazırlanmıştır.

About

This project aims to develop the most efficient algorithm to sort a sequence of numbers in the fewest steps possible. The sorting process is optimized using stack data structures, and data is transferred between two stacks. Various sorting algorithms (Bubble Sort, Quick Sort, etc.) are evaluated to select the most suitable one. The project provides

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published