Implementasi Algoritma Divided & Conquer

Implementasi Algoritma Divided & Conquer

  • Implementasi Algoritma Divided & Conquer Quick Sort

            Quick Sort ditemukan oleh C.A.R Hoare. Algoritma ini sama seperti merge sort yaitu berdasarkan pada pola divide & conquer. Walaupun sama namun algoritma ini terdapat perbedaan dalam langkah - langkah penyelesaiannya, yaitu :

  1. Divide
  2. Memilah rangkaian data menjadi dua bagian rangkaian A[p...q - 1] dan A[q + 1...r] dimana setiap elemen A[p...q + 1] adalah kurang atau sama dengan A[q] dan setiap elemen A[q + 1...r] adalah lebih atau sama dengan A[q]. A[q] merupakan elemen pivot dan perhitungan elemen q merupakan salah satu bagian dari prosedur pemisahan.

  3. Conquer
  4. Mengurutkan elemen pada sub-rangkaian secara rekursif.

Berikut ini algoritma dari quick sort

void quickSort(Object array[], int leftIdx, int rightIdx) {
int pivotIdx;
/* Kondisi Terminasi */
if (rightIdx > leftIdx) {
pivotIdx = partition(array, leftIdx, rightIdx);
quickSort(array, leftIdx, pivotIdx-1);
quickSort(array, pivotIdx+1, rightIdx);
    }
}
 

  • Implementasi Algoritma Divided & Conquer Linear Search
            Algoritma pencarian secara linear adalah algoritma untuk mencari sebuah nilai pada table sambarang dengan cara melakukan pass atau transversal. Transversal dari awal sampai akhir table. Ada dua macam cara pencarian pada table. Algoritma mempunyai dua jenis metode yaitu dengan Boolean dan tanpa Boolean. Berikut algoritma dari Linear Search :


void seqSearch1 (int T[], int Nmax, int value, int *idx) { 
int i; 
i = 1 
while ((i<Nmax) && (T[i] != value)) { 
    i = i + 1; 
    

if (T[i] == value) {
*idx = i; 
    }
else {
*idx = 0;
    }
}

            Algoritma di atas melakukan pengulangan sampai i sama dengan Nmax (ukuran tabel) atau harga value dalam tabel sudah ditemukan. Kemudian harga i di-assign ke dalam variable idx. Elemen terakhir diperiksa secara khusus.

void seqSearch1 (int T[], int Nmax, int value, int *idx) { 
int i; 
boolean found; 
i = 1 
found = false; 
while ((i<Nmax) && (!found)) { 
    if (T[i] == value) { 
        found = true
        } 
    else { 
i = i + 1; 
    } 
if (found) {
*idx = i; 
    }
else {
*idx = 0;
    }
}

 Tentang Pembuat :





Nama    : Eugiutama Fitra Luqman
NPM     : 20312109
Kelas     : IF 20 C

Webstie Teknokrat :

FSIP Teknokrat 

Komentar

Postingan populer dari blog ini

Macam - Macam Permasalahan dalam Algoritma

IMPLEMENTASI ALGORITMA BRANCH & BOUND