Selasa, 16 Februari 2021

Binary Search

 

 Source Code

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>

int main() {
  	const int MAXDATA = 500;
	//deklarasi variabel
	int data[MAXDATA], urutan, i, j, jmlData, jmlKetemu, cari, tukar, l, m;
	int top, bottom, middle, ketemu;
	char lagi='Y';

	while (lagi=='Y' || lagi=='y') {

        printf("Berapa jumlah data ? "); scanf("%i",&jmlData);
        //proses pembangkitan data random

        srand (time(NULL));
        //randomize();

        for (i=0; i<jmlData; i++) {
            ketemu = 1;
            while (ketemu==1) {
                ketemu = 0;
                data[i] = rand() % 1234 + 50;
                for (m=0; m<i; m++) {
                    if (data[i] == data[m]) {
                        ketemu = 1;
                    }
                }
            }
        }

        //proses pengurutan data dengan Bubble Sort
        l = jmlData - 1;
        for (i = l - 1; i>=0; i--) {
            for (j=0; j <= i; j++) {
                if (data[j] > data[j+1]) {
                    tukar = data[j];
                    data[j] = data[j+1];
                    data[j+1] = tukar;
                }
            }
        }

        for(i=0;i<jmlData;i++) {
            printf("%3d. %4d ", i+1, data[i]);
        }

        //memasukkan data yang akan dicari ke dalam cari
        printf("\nMasukkan data yang akan anda cari: "); scanf("%d",&cari);

        //proses pencarian data
        jmlKetemu = 0;
        top = jmlData;
        bottom = 0;
        while (top>=bottom) {
            middle = (top + bottom) / 2;
            if (data[middle] == cari) {
                urutan = middle;
                jmlKetemu++;
            }

            if(data[middle]<cari) {
                bottom=middle+1;
            } else {
                top=middle-1;
            }
        }

        if (jmlKetemu>0) {
            printf("Data %i yang dicari terdapat dalam urutan ke-%i", cari, urutan+1);
        } else {
          printf("Data tidak ditemukan dalam array\n");
        }

        printf("\nIngin mencari lagi [Y/T][ ]\b\b");
        char tekan=' ';
        while (!(tekan=='Y' || tekan=='y' || tekan=='T' || tekan=='t')) {
            tekan = getch();
        }
        putchar(tekan);
        lagi = tekan;
		putchar('\n');
	}
}

Tidak ada komentar:

Posting Komentar

Perkalian Matriks

  Source Program #include <stdio.h> #include <conio.h> #define MAX 50 int main() { int i, j, k, brsA, kolA, kolB; float Matr...