Sabtu, 09 Maret 2013

3. Stack


Stack (Tumpukan) pada Algoritma dan Struktur Data


Stack  atau  tumpukan  adalah  suatu  stuktur  data  yang  penting  dalam pemrograman, bersifat LIFO (Last In First Out) dimana benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack. Contohnya, karena kita menumpuk Compo di posisi terakhir, maka Compo akan menjadi elemen teratas dalam tumpukan. Sebaliknya, karena kita menumpuk Televisi pada saat pertama kali, maka elemen Televisi menjadi elemen terbawah dari tumpukan. Dan jika kita mengambil elemen dari tumpukan,  maka  secara  otomatis  akan  terambil  elemen  teratas,  yaitu Compo juga.
Operasi-operasi/fungsi Stack
  • Push (pengisian data) : digunakan untuk menambah item pada stack pada                                                    tumpukan paling atas
  • Pop (pengeluaran data) : digunakan untuk mengambil item pada stack pada                                                      tumpukan paling atas
  • Clear   :  digunakan untuk mengosongkan stack
  • IsEmpty  :  fungsi yang digunakan untuk mengecek apakah stack sudah                                      kosong
  • IsFull  :  fungsi  yang  digunakan  untuk  mengecek  apakah  stack  sudah penuh.                  Jangkauan top=0 s/d n-1
Stack dengan struktur array
  1. Mendefinisikan Stack dengan menggunakan struct
  2. Mendefinisikan MAX_STACK untuk maksimum isi stack
  3. Membuatlah variabel array data sebagai implementasi stack secara nyata
  4. Mendeklarasikan operasi-operasi/function di atas dan buat implemetasinya
Deklarasi STACK dengan struct dan array data
typedef struct STACK{
int top;             // Jangkauan top=0 s/d n-1
char data[10][10];
//misalkan  : data adalah array of string
//berjumlah  10 data, masing-masing string
//menampung maksimal  10 karakter

Deklarasi/buat variabel dari struct adalah STACK tumpuk;
Deklarasi MAX_STACK adalah  #define MAX_STACK  10, yang perhitungannya dimulai dari 0 sampai dengan 9.
Inisialisasi Stack
Pada mulanya isi top dengan  -1, karena array dalam C dimulai dari  0, yang berarti stack adalah kosong. Top  adalah suatu  variabel  penanda  dalam  STACK  yang  menunjukkan elemen  teratas  Stack  sekarang.    Top  Of  Stack  akan  selalu  bergerak hingga mencapai MAX of STACK sehingga menyebabkan stack penuh. Ilustrasi stack pada saat inisialisasi ditunjukkan pada gambar di bawah ini:
Fungsi isFull
Untuk memeriksa apakah stack sudah penuh, maka dapat dilakukan dengan cara   memeriksa   top   of   stack,   jika   sudah   sama   dengan MAX_STACK-1 maka full, jika belum (masih lebih kecil dari MAX_STACK-1) maka belum full. Seperti ditunjukkan gambar di bawah ini:
Fungsi Push
Untuk memasukkan elemen ke stack, selalu menjadi elemen teratas stack. Tambah satu (increment)   nilai top of stack terlebih dahulu setiap kali ada penambahan elemen stack, asalkan stack masih belum penuh, kemudian isikan  nilai  baru  ke  stack  berdasarkan  indeks  top  of  stack  setelah ditambah satu (diincrement). Seperti gambar di bawah ini.Fungsi Pop
Untuk mengambil elemen teratas dari stack.Ambil dahulu nilai elemen teratas stack dengan mengakses top of stack, tampilkan nilai yang akan diambil terlebih dahulu, baru didecrement nilai top of stack sehingga jumlah elemen stack berkurang.
Sintaks program fungsi POP adalah:
Fungsi Print
Untuk menampilkan semua elemen-elemen stack. Dengan cara looping semua nilai array secara terbalik, karena kita harus mengakses dari indeks array tertinggi terlebih dahulu baru ke indeks yang kecil!
Sintaks program fungsi Print:
void TampilStack(){
for(int i=tumpuk.top;i>=0;i–)  {
printf(“Data : %s\n”,tumpuk.data[i]);
}
}

Senin, 18 Februari 2013

2.3 Exchange Sort


EXCHANGE SORT

Sangat mirip dengan Bubble Sort, dan banyak yang mengatakan Bubble Sort
sama dengan Exchange Sort. Pebedaan ada dalam hal bagaimana membandingkan antar
elemen-elemennya. Exchange sort membandingkan suatu elemen dengan elemen-
elemen lainnya dalam array tersebut, dan melakukan pertukaran elemen jika perlu. Jadi
ada elemen yang selalu menjadi elemen pusat (pivot). Sedangkan Bubble sort akan
membandingkan elemen pertama/terakhir dengan elemen sebelumnya/sesudahnya,
kemudian elemen sebelum/sesudahnya itu akan menjadi pusat
(pivot) untuk
dibandingkan dengan elemen sebelumnya/sesudahnya lagi, begitu seterusnya.

Sintaks program fungsi Exchange Sort

void
{

exchange_sort()

for

(int i=0; i<n-1; i++){
for(int j = (i+1); j<n; j++){
if (data [i] < data[j])
tukar(i,j); //descending
}

}

}

2.2 Sorting (Selection)


Selection Sort (Metode Seleksi)

Metode seleksi melakukan pengurutan dengan cara mencari data yang terkecil kemudian menukarkannya dengan data yang digunakan sebagai acuan atau sering dinamakan pivot. Proses pengurutan dengan metode seleksi dapat dijelaskan sebagai berikut :

Langkah pertama dicari data terkecil dari data pertama sampai data terakhir. Kemudian data terkecil ditukar dengan data pertama. Dengan demikian, data pertama sekarang mempunyai nilai paling kecil dibanding data yang lain. Langkah kedua, data terkecil kita cari mulai dari data kedua sampai terakhir. Data terkecil yang kita peroleh ditukar dengan data kedua dan demikian seterusnya sampai semua elemen dalam keadaan terurutkan.

Algoritma seleksi dapat dituliskan sebagai berikut :

1. i = 0
2. selama (i < N-1) kerjakan baris 3 sampai dengan 9
3. k = i
4. j = i + 1
5. Selama (j < N) kerjakan baris 6 dan 7
6. Jika (Data[k] > Data[j]) maka k = j
7. j = j + 1
8. Tukar Data[i] dengan Data[k]
9. i = i + 1

Di bawah ini merupakan prosedur yang menggunakan metode seleksi:

void SelectionSort()
{
int i, j, k;
for(i=0; i<Max-1;i++)
{
k = i;
for (j=i+1; j<Max; j++)
if(Data[k] > Data[j])
k = j;
Tukar(&Data[i], &Data[k]);
}
}

2.1 Sorting (Bubble)

BUBBLE SORT
Metode pengurutan gelembung (Bubble Sort) diinspirasikan oleh gelembung sabun yang berada dipermukaan air. Karena berat jenis gelembung sabun lebih ringan daripada berat jenis air, maka gelembung sabun selalu terapung ke atas permukaan. Prinsip di atas dipakai pada pengurutan gelembung.
Bubble sort (metode gelembung) adalah metode/algoritma pengurutan dengan dengan cara melakukan penukaran data dengan tepat disebelahnya secara terus menerus sampai bisa dipastikan dalam satu iterasi tertentu tidak ada lagi perubahan. Jika tidak ada perubahan berarti data sudah terurut. Disebut pengurutan gelembung karena masing-masing kunci akan dengan lambat menggelembung ke posisinya yang tepat.



Algoritma Bubble Sort

  1. Membandingkan data ke-i dengan data ke-(i+1) (tepat bersebelahan). Jika tidak sesuai maka tukar (data ke-i = data ke-(i+1) dan data ke-(i+1) = data ke-i). Apa maksudnya tidak sesuai? Jika kita menginginkan algoritme menghasilkan data dengan urutan ascending (A-Z) kondisi tidak sesuai adalah data ke-i > data ke-i+1, dan sebaliknya untuk urutan descending (A-Z).
  2. Membandingkan data ke-(i+1) dengan data ke-(i+2). Kita melakukan pembandingan ini sampai data terakhir. Contoh: 1 dgn 2; 2 dgn 3; 3 dgn 4; 4 dgn 5 … ; n-1 dgn n.
  3. Selesai satu iterasi, adalah jika kita sudah selesai membandingkan antara (n-1) dgn n. Setelah selesai satu iterasi kita lanjutkan lagi iterasi berikutnya sesuai dengan aturan ke-1. mulai dari data ke-1 dgn data ke-2, dst.
  4. Proses akan berhenti jika tidak ada pertukaran dalam satu iterasi.


Rabu, 30 Januari 2013

1. Array dan Set

STRUKTUR DATA

Struktur data merupakan sistem atau cara penyimpanan file atau organisasian file secara teratur agar pada saat ingin menggunakannya file/ data tersebut dapat bekerja secara efisien.


SET

Set adalah tipe data terstruktur yang terdiri dari elemen yang disebut anggota set. Anggota set memiliki urutan dan tidak boleh ada dua anggota set yang sama.


Operasi - operasi dalam set :

1.Union : Pengabungan antara dua elemen yang berbeda atau lebih menjadi 1 anggota.

2.Intersection : Pengabungan antara 2 dua elemen atau lebih yang memiliki kesamaan.

3.Difference : Pernyataan pada elemen yang ada pada anggota yang pertama dan yang tidak ada pada anggota kedua.


Contoh Operasi dalam set :

A {1,5,6,7,9}

B {2,4,5,8,9}


A U B : 1,2,4,5,6,7,8,9

A Irisan(simbol U terbalik) B : 5,9

A - (Difference) B : 1,6,7

B - A : 2,4,8


ARRAY


Array adalah suatu tipe data terstruktur yang terdapat dalam memori yang terdiri dari sejumlah elemen yang mempunyai tipe data yang sama.
 

Jenis array :
1.Array 1 dimensi : Menampilkan data dalam satu baris saja
2.Array 2 Dimensi : Menampilkan data dalam dua baris seperti koordinat(x,y)
 

Contoh Array : 
*Array 1 dimensi :
  a = Andi
  b = Budi
  c = Cindy
 

*Array 2 dimensi :
  Matrix