Senin, 02 Mei 2016

PENCARIAN ARRAY DENGAN TEKNIK SEQUENTIAL SEARCH DENGAN DATA TERURURT



1.      DASAR TEORI
Pencarian Berurut (sebuential search) adalah pencarian yang dilakukan pada sejumlah data dengan metode berurut (darii data yang posisinya berada di depan hingga data yang berada di belakang).
Pada pratikum ini, kumpulan data tersebut disajikan sebagai larik atau array.
Kumpulan data array dapat dalam kondisi belum terurur dan sudah terurut.
Perbedaanya dapat dirincikan seperti berikut :
1)      Data yang belum terurut :
·         Secara umum pencarian berjalan dengan relatif lambat
·         Waktu pencarian sebanding dengan jumlah elemen larik
2)      Data yang sudah terurut :
·         Dapat meningkatkan kinerja pencarian
·         Karena dapat segera menyimpulkan bahwa data yang dicari tidak terdapt di dalam larik bila ditemukan dengan elemen latik yang besar dari data yang dicari.
Pencarian beruntun – data yang terururt :
Data yang tidak terurut :
13
16
14
21
76
15
                          1            2            3              4          5            6
Data yang sudah terurut :
13
14
15
16
21
76
  1            2            3              4          5            6
           


Algoritma pencarian berurutan pada larik yang terurut menarik (ascending)
                        I           1
                        While ( i < n ) and  ( A [j] < x ) do
                                    I           I +1
                        Endwhile
                        If A [i] = x
                                    Idx            i
                        Else
                                    Idx          -1

                        endif



Berikut adalah algoritmanya dari :

int i;
        int array[] = {12, 9, 4, 99, 120, 1, 3, 10};
        System.out.println("value before the sort:\n");
        for (i = 0; i < array.length; i++){
            System.out.print(array [i] + " ");
        }
        System.out.println();
        quicksort(array, 0, array.length-1);
        System.out.println("values after the sort:\n");
        for (i =0; i < array.length; i++){
            System.out.print(array [i] + " ");
        }
            System.out.println();
            System.out.println("pause");
        }
    
public static int partition (int arr[], int left, int right){
    int i = left, j = right;
    int tmp;
    int pivot = arr[(left + right) / 2];
    while (i <= j){
        while (arr[i] < pivot){
            i++;
        }
        while (arr[j] > pivot){
            j--;
        }
        if (i <= j){
            tmp = arr[i];
            arr[i] = arr[j];
            arr[j] = tmp;
            i++;
            j--;
        }
    };
    return i;
}
public static void quicksort (int arr[], int left, int right){
    int index = partition(arr, left, right);
    if (left < index - 1){
        quicksort(arr, left, index - 1);
    }
    if (index < right){
        quicksort(arr, index, right);
    }
    }
}







Tidak ada komentar:

Posting Komentar