1 Haziran 2010 Salı

Binary Search (6. Quiz)

#include <stdio.h>
#include <stdlib.h> //system için gerekli
#include <conio.h> //getch() için gerekli
#include <time.h>

#define Boyut 10
#define Temizle system("cls")

void Sirala(int[]);
void DiziyiYaz(int []);

int main()
{
    int *dizi=(int *)malloc(Boyut*sizeof(int));
    char *adres=malloc(20);
    int ilkDeger=0;
    int sonDeger=Boyut-1;
    int Aranan,araDeger,i;


    srand(time(NULL));
    for (i=0;i<Boyut;i++)
        dizi[i]=rand()%100+1;

    //for(i=0;i<Boyut;i++)
        //adres[i]=&dizi[i];




    Temizle;
    printf("\tRastgene Atanan %d Sayi: ",Boyut);
    DiziyiYaz(dizi);
    Sirala(dizi); //Dizi küçükten büyüğe siralanir

    printf("\n\n %d",sizeof(adres[0]));

    printf("\n\tDizinin Siralanmis Hali: ");
    DiziyiYaz(dizi);

    printf("\n\n\tAranacak Sayiyi Giriniz: ");
    scanf("%d",&Aranan);

    while (ilkDeger <= sonDeger)
    {
        araDeger=(sonDeger+ilkDeger)/2;

        if (dizi[araDeger]==Aranan) break;

        else if (dizi[araDeger]>Aranan)
            sonDeger=araDeger;

        else ilkDeger=araDeger+1;
    }

    free(dizi);
    if (ilkDeger>sonDeger) printf("\n\tAranan Sayi Dizi Icerisinde Yok!");

    else printf("\n\n\n\n\tDizi[%d] = %d bulundu..",araDeger,Aranan);

    getch();
    return 0;
}


/* Dizinin Elemanlarını Küçükten Büyüğe Siralayan Fonksiyon*/
void Sirala(int dizi[])
{
    int Temp,Kontrol=0,i;

    while (Kontrol==0)
    {
        Kontrol=1;
        for (i=0;i<Boyut-1;i++)
            if (dizi[i]>dizi[i+1])
            {
                Temp=dizi[i];
                dizi[i]=dizi[i+1];
                dizi[i+1]=Temp;
                Kontrol=0;
            }

    }
}

/* Gönderilen "Boyut" elemanlı dizinin elemanlarını ekrana yazdiran fonksiyon*/
void DiziyiYaz(int dizi[])
{
    int i;
    for (i=0;i<Boyut;i++)
        printf("%3d ",dizi[i]);
}





Hiç yorum yok:

Yorum Gönder