02
Eki
2025

Veri yapıları ve algoritmalar II – kaynak kodlar 2

Yerleştirmeli ve kabuk sıralama

#include <iostream>
using namespace std;

// YERLESTIRMELI SIRALAMA ALGORITMASI
void yerlestirmeli(int deneme[], int n){
    for(int i=1; i<n; i++){
        int anahtar = deneme[i];
        int j = i-1;
        while((j>=0) && (deneme[j]>anahtar)){
            deneme[j+1] = deneme[j];
            j--;
        }
        deneme[j+1] = anahtar;
    }
}

// KABUK SIRALAMA ALGORITMASI
void kabuk(int deneme[], int n){
    for (int a=n/2; a>0; a=a/2)
        for(int i=a; i<n; i++){
            int temp = deneme[i];
            int j;
            for(j=i; (j>=a)&&(deneme[j-a]>temp); j=j-a)
                deneme[j] = deneme[j-a];
            deneme[j] = temp;
        }
}

int main()
{
    int dizi[5] = {24, 12, 50, 60, 2};
    int elemansayisi = 5;
    
    // Yerlestirmeli siralama yap
    yerlestirmeli(dizi, elemansayisi);
    
    // Kabuk siralama yap
    kabuk(dizi, elemansayisi);
    
    for(int i=0;i<elemansayisi;i++){
        cout<<dizi[i]<<endl;
    }
    
    return 0;
}

Hızlı sıralama

#include <iostream>
using namespace std;

int bolumlendir(int dizi[], int k, int b){
    int pivot = dizi[b];
    int i = k - 1;
    for(int j = k; j<=b; j++){
        if(dizi[j] < pivot){
            i++;
            int temp = dizi[i];
            dizi[i] = dizi[j];
            dizi[j] = temp;
        }
    }
    int temp = dizi[i+1];
    dizi[i+1] = dizi[b];
    dizi[b] = temp;
    return(i+1);
}

void sirala(int dizi[], int kucuk, int buyuk){
    if(kucuk<buyuk){
        int bi = bolumlendir(dizi, kucuk, buyuk);
        sirala(dizi, kucuk, bi-1);
        sirala(dizi, bi+1, buyuk);
    }
}

int main()
{
    int dizi[10] = {50, 32, 26, 90, 0, -12, -44, 67, 79, 81};
    sirala(dizi,0, 5);
    for(int i=0; i<10; i++)
        cout<<dizi[i]<<endl;
}

 

error: içerik koruması