algoritma struktur data metode searching


Berikut merupakan materi searching dalam komputasi struktur data. Dalam hal ini ada dua jenis model search yaitu: 1 dengan binary search, 2 dengan linier search. nah semua ini punya kelebihan dan kekurangan masing oleh sebab itu mari di coba program ini. dan kalian bisa bandingkan lebih efisien mana kah metode tersebut.

code program

==========================================================================
#include<stdio.h>
#define max 100

int n;
int data[max];

void cetak(){
    int i;
    puts("data yang diinputkan\n");
    for(i=0;i<n;i++){
        printf("%d ",data[i]);
    }
}

void sequential()
{
int i,flag=0,cari;

printf("masukan data yang ingin dicari = ");
scanf("%d",&cari);

     for(i=0;i<n;i++)
    {
            if(data[i]==cari)
           
            printf("\n===data %d ditemukan pada indek %d ===\n",cari,i);
            flag++;
    }
    if(flag<=0)
    printf("\n===data %d tidak ditemukan  ===\n");
}

void tukar(int *a,int *b){
    int temp;
    temp=*a;
    *a=*b;
    *b=temp;
}

//sintak dari buble sort dengan optimasis
void buble(){
    int i,flag,perbandingan=0,j=0;
    //start=clock(); // untuk menghitung waktu proses processor
    for(i=0;i<n-1;i++){
        flag=0;
        for(j=0;j<n-i-1;j++){
            perbandingan++;
            if(data[j]>data[j+1]){ 
                tukar(&data[j],&data[j+1]);
                flag=1;//sebagai penanda jika terdapat penukaran data
            }
        }
    }
    puts("data setelah diututkan");
    cetak();
}

void binary()
{
    int awal=0, tengah, akhir=n-1, cari, flag=0;
    buble();
   
    printf("\nData yang anda cari : ");
    scanf("%d",&cari);
    while ((awal<=akhir)&&(flag==0))
    {
        tengah=(awal+akhir)/2;
        if(data[tengah]==cari)
        {
            flag=1;
        }
        else if (cari<data[tengah])
        {   
            akhir=tengah-1;
            printf ("Cari kiri\n");
            flag=1;
        }
        else if(cari>data[tengah])
        {   
            awal=tengah+1;
            printf("Cari kanan\n");
            flag=1;
        }
    }
    if(flag==1)
        printf ("Data ditemukan\n");
    else
        printf("Data tak ditemukan\n");
}

main(){
    int i,pil;
    printf("masukan jumlah data: ");scanf("%d",&n);
   
    for(i=0;i<n;i++){
        data[i]=rand()%100+1;
    }
    cetak();
    puts("\n\n<<menu>>\n");
    printf("1.sequential search\n2.binary search\n\n");
    fflush(stdin);
    printf("masukan pilihan: ");scanf("%d",&pil);
    if(pil==1){
        sequential();
    }
    else if(pil==2){
        binary();
    }   
}
=========================================================================
 berikut kode program dari searching untuk lebih jelasnya bisa di coba program tersebut