1~

Minter Coder's Blog

Veri Yapıları & Algoritmalar Sorting Algorithms 1 - Insertion Sort(Araya Ekleme Sıralaması)

2022-05-26
  • Sıralama , sayısal ortamdaki bilgilerin veya verilerin , belirli bir anahtar sözcüğe göre belirli bir anlamda sıralı erişilmesini sağlayan düzenlemedir.
  • Sıralama algoritmaları, elemanları rastgele olan veya dağınık şekilde bulunan bilgileri belirli bir anlamada düzenleme işi yaparlar.
  • Eğer ki sıralama işlemi disk,çubuk bellek gibi saklama birinlerinde tutulan dosyalar üzerinde yapılırsa harici sıralama(external sorting) , RAM gibi bilgisayarın iç bellegi üzerinde yapılırsa dahili sıralama(internal sorting) olarak anılır

 

Insertion Sort Algorithm(Araya Ekleme Algoritması) :

Sıralanacak dizinin ilk elemanını yerine bırakarak ondan sonraki elemanları sırayla alarak sıraya uygun yere sokar.Sıralı olan dizilerde sıralı olma özelliğini bozmadan yeni eleman eklemek için uygundur denilebilir.En iyi durum zaman karmaşası O(n) , en kötü durum O(n^2) dir.

C dilinde örneğine bakacak olursak eğer ;


// aşağıdaki yazılardan çoğunu anlamayabilirsiniz bu yüzden insertion sortu anlamak için aşağıdaki arrayi kafanızda canlandırarak senaryoyu düşünün.
void insertionSort(int array[],int N){
    int ekle;
    int j;
    // 1 'den başlatıyoruz çünkü 1.indexten başlayacağız kıyaslamaya
    for(int i = 1;i<N;i++){
        // ekle değerimiz 1.indexteki değer olacak
        ekle = array[i];
        // burada koşullarımızı sağlaması için inner döngümüzü de oluşturduk
        for(j = i-1;j>=0 && ekle <= array[j];j--){
            array[j+1]=array[j]; // burda geriye kaydırıyoruz
        }
        // burda da yeri boşalttık ve eklememizi yapıyoruz
        array[j+1]=ekle;
    }

}

int main(){
    
    int array[] = {1,0,2,9,4,3,5,6,99};
    int n = sizeof(array) / sizeof(array[0]);
    insertionSort(array,n);
    for(int i = 0;i<n;i++){
        printf("%d\t",array[i]);
    }
    
    return 0;
}