1. Home
  2. Docs
  3. C++
  4. Diziler
  5. Dizilerde Sıralama

Dizilerde Sıralama

Print

Bir diziyi nasıl sıralarız? Bunun için neredeyse sonsuz algoritma tasarlayabilir, farklı farklı yollar bulabiliriz. Bu yazıda 2 farklı yöntem kullanıcaz. Bunlardan bir tanesi hazır fonksiyon, bir de selection sort denilen sıralama algoritması. Öncelikle sıralama algoritmasından bahsedecek olursak, iki for döngüsü sayesinde iki değeri karşılaştırıyor ve soldaki değer sağdaki değerden büyükse swap gerçekleştiriyor.

Koda gelecek olursak,

uint8_t array[] = {1, 4, 3, 7, 2, 6, 8, 5};

uint8_t arraySize = sizeof(array) / sizeof(array[0]);

for (size_t i = 0; i < arraySize-1; ++i)
{
    uint8_t smallestIndex = i;

    for (size_t k = i + 1; k < arraySize; ++k)
    {
        if (array[k] < array[smallestIndex])
        {
            smallestIndex = k;
        }
    }
    swap(&array[i], &array[smallestIndex]);
}

Swap için yazmış olduğumuz fonksiyon da şu şekilde,


void swap(uint8_t *first, uint8_t *second)
{
    uint8_t third = *first;
    *first = *second;
    *second = third;
}

Yukarıda bahsetmiş olduğumuz yöntem manuel olarak belirlediğimiz algoritma ile yapmış olduğumuz sıralama yöntemi. Bir de algorithm kütüphanesinin sağlamış olduğu sort fonksiyonu var. 1 satır fonksiyon ile tüm dizimizi sıralayabiliriz.

Koda gelecek olursak,

#include <iostream>
#include <algorithm>  

int main(int argc, const char** argv)
{
    uint8_t array2[] = {1, 4, 3, 7, 2, 6, 8, 5};

    std::sort(std::begin(array2), std::end(array2));    

    return 0;
}

Sonucu ekrana yazdırmak için şöyle bir for döngüsü kullanalım,

for (size_t i = 0; i < arraySize; i++)
{
    std::cout << unsigned(array[i]) << ' ';
}
std::cout << std::endl;

Sonucu ekranda görebilirsiniz.

Bir diziyi iki farklı yöntemle sıralamayı gördük. Daha farklı durumlarda daha farklı algoritmalar kullanılabilir. Diziler hakkında daha detaylı bilgi almak için diğer makaleleri takip edebilirsiniz.

Tags , , ,