Rabu, 30 April 2014

PENCARIAN DATA


Pencarian merupakan proses fundamental dalam pengelolaan data. Proses pencarian menemukan nilai tertentu dalam himpunan data yang bertipe sama. Apabila data yang dicari terdapat dalam himpunan data tersebut, ditentukan pula posisi dari data yang dicari pada himpunan.
Pada himpunan data tidak terurut, dapat digunakan metode pencarian sekuensial (sequencial search) untuk mencari data. Sedangkan pada himpunan data tidak terurut dapat digunakan metode pencarian sekuensial (sequencial search) dan biner (binary search). Berikut ini merupakan penjelasan dari metode pencarian tersebut.

1.      Pencarian Sekuensial (Sequencial Search)
Metode pencarian sekuensial merupakan proses membandingkan setiap elemen dalam himpunan satu per satu secara terurut, mulai dari elemen pertama sampai dengan elemen yang dicari ditemukan atau seluruh elemen sudah dibandingkan. Sebagai contoh, misalkan data terurut membesar. Pencarian dimulai dari data pertama sampai dengan data terakhir. Pencarian dihentikan apabila data yang dicari ditemukan atau data yang dibandingkan pada proses pencarian sudah lebih besar dari data yang dicari.
Procedure sequensialSort  (var A : Tabel; N : integer; x : tipedata; var iSearch :   integer);
{IS            : A adalah tabel dengan banyaknya data N. x adalah data yang dicari   dan bertipe sama dengan elemen tabel}
{FS           : iSearch <> 0 bila A[iSearch] = x,  iSearch = 0 bila x tidak ditemukan di A}
Var  i : integer; {counter}
Begin
                 if (N = 0) then iSearch := 0 {tabel data 0}
                 else
                 begin
                             i:=1;
                             while ((A[i].NIM < x) and (i < N)) do
                             i:=i+1;
                             if  (A[i].NIM = x) then
                             iSearch := i;
                             else
                             iSearch := 0;
                 end;
end;

PENGURUTAN DATA


Pengurutan data adalah proses yang dilakukan terhadap himpunan data, disusun sedemikian rupa sehingga diperoleh data baru berurut. Pada umumnya ada dua macam pengurutan, yaitu (1) pengurutan secara ascending (urut naik) dan (2) pengurutan secara descending (urut turun). Proses pengurutan seluruh data berada dalam memori disebut internal sorting. Sedangkan bila data tidak berada di dalam memori disebut external sorting.

Masalah utama dalam pengurutan adalah bagaimana mendapatkan metode terbaik yang akan memberikan jumlah operasi pemindahan data paling minimum. Kedua operasi tersebut akan mempengaruhi algoritma pengurutan data. Umumnya kompleksitas algoritma biasa dilihat dari waktu (time complexcity) atau ruang (space complexcity).

Algoritma pengurutan data yang akan diuraikan dan dilakukan dalam praktikum struktur data ini hanya mencangkup tiga metode pengurutan data, yaitu :  (1) insert sort (pengurutan penyisipan), (2) selection sort (pengurutan pemilihan), dan (3) bubble sort (pengurutan gelembung). Berikut ini merupakan penjelasannya.


1.      Insert Sort (Pengurutan Penyisipan)
Metode ini dilakukan dengan cara menyisipkan elemen larik pada posisi yang tepat. Prinsip kerja metode ini membagi dua data sedemikian rupa sehingga pada bagian pertama menampung data yang sudah terurut dan bagian kedua menampung data yang belum terurut. Selanjutnya diambil satu data dari bagian yang belum terurut dan dilakukan penyisipan ke bagian yang sudah terurut.
Procedure insertionsort (var A : tabel; N : integer);
{IS             : Tabel A terdefinisi dengan N adalah banyaknya data}
{FS            : Tabel A yang terurut membesar}
Var
      pass, i : integer; {counter}
      temp : integer; {variabel untuk nilai sementara}
Begin
      for pass := 2 to N do
      begin
                  temp := A[pass];
                  i := pass-1;
                  while ((temp < A[i]) and (I > 1) do
                  begin
                              A[i+1] := A[i];
                              i := i-1;
                  end;
                  if (temp < A[i]) then
                  begin
                              A[i+1] := A[i];
                              i := i-1;
                  end;
                  A[i+1] := temp;
                  End;
      End;

LINKED LIST


Linked list merupakan struktur data yang memiliki kelebihan dalam efisiensi memori dan kecepatan dalam menyisipkan data.
Linked list berguna untuk menyimpan beberapa data dalam memori. Komponen dasar dari suatu list disebut sebagai node. Sebuah node terdiri dari dua buah bagian. Bagian pertama adalah bagian yang memuat informasi data, bagian kedua adalah bagian yang menunjukkan alamat data berikutnya atau disebut juga dengan bagian penunjuk.

Linked List dengan Pointer
Pascal menyediakan prosedur standar untuk membuat dan menghapus sebuah variabel dinamis, yaitu new dan dispose. Jika P telah dideklarasikan sebagai sebuah variabel pointer bertipe node, maka pernyataan new(P) akan menciptakan sebuah variabel dinamis baru bertipe node dan menandai lokasinya dengan pointer P. Sedangkan pernyataan dispose(P) akan mengembalikan ruang yang digunakan pada lokasi yang ditunjuk P ke sistem komputer, pointer P menjadi tidak terdefinisikan lagi. 


Deklarasi Linked List dengan Pointer
            type
            tipeinfo             = record
                        nim        : string;
                        nilai       : integer;
            end;
            tipeptr               = ^tipenode;
            tipelist               = tipeptr;
            tipenode            = record
                        info       : tipeinfo;
                        next       : tipeptr;
            end;
            var list : tipelist;
elemen-elemen list berupa record yang memuat field berisi informasi data serta sebuah field bertipe pointer yang berisi alamat elemen berikutnya.

Operasi pada Linked List
1.      Membuat List
Prosedur ini berupa prosedur untuk membuat list pertama kali, yaitu mengalokasikan pointer untuk head. Nilai awal dari list adalah kosong (nill).
      Procedure inisialisasi (var list : tipelist);
      Begin
                  New(list);
                  List := nill;
      End;
Domo-kun Staring