RANGKUMAN ALGORITMA DAN SRUKTUR DATA

 

Bismillahirrahmanirrahim

Assalamualaikum Wr. Wb.

    Hai Teman - Teman..!! Perkenalkan nama Saya Reyhan Adi Saputra, Saya Mahasiswa dari Universitas Muhammadiyah Sidoarjo dari jurusan Teknik Informatika

    Jika kamu tertarik dengan Universitas saya silahkan akses link berikut :

    - umsida.ac.id

    - fst.umsida.ac.id

    Kali ini saya akan memberikan rangkuman dari hasil Praktikum Algortima Dan Sruktur Data yang saya sudah buat

    Semoga rangkuman bermanfaat untuk kita semua

POKOK BAHASAN 1

STRUKTUR DATA,ARRAY,POINTER,DAN STRUKTUR

A.    Konsep Dasar Struktur Data

Struktur data adalah sebuah bagian dari ilmu pemrograman dasar yang mempunyai karakteristik yang terkait dengan sifat dan cara penyimpanan sekaligus penggunaan atau pengaksesan data.

Struktur data bertujuan agar cara merepresentasikan data dalam membuat program dapat dilakukan secara efisien dalam pengolahan di memori dan pengolahan penyimpanan dari program ke storage juga lebih mudah dilakukan.

 

B.     Konsep Dasar Array

Array adalah kumpulan elemen-elemen data. Kumpulan elemen tersebut mempunyai susunan tertentu yang teratur. Jumlah elemen terbatas, dan semua elemen mempunyai tipe data yang sama. Jenis-jenis array :

1.      Array Satu Dimensi Struktur array satu dimensi dapat dideklarasikan dengan bentuk umum berupa : tipe_var nama_var [ukuran]; Dengan :

-          Tipe_var : untuk menyatakan jenis elemen array (misalnya int, char, unsigned).

-          Nama_var : untuk menyatakan nama variabel yang dipakai.

-          Ukuran : untuk menyatakan jumlah maksimal elemen array.

Contoh : fioat nilai_ujian [5];

2.      Array Dua Dimensi

Tipe data array dua dimensi biasa digunakan untuk menyimpan, mengolah maupun menampilkan suatu data dalam bentuk tabel atau matriks. Untuk mendeklarasikan array agar dapat menyimpan data adalah : tipe_var nama_var [ukuranl] [ukuran2]; Dimana :

-          Ukuranl menunjukkan jumlah/nomor baris.

-          Ukuran2 menunjukkan jumlah/nomor kolom.

Jumlah elemen yang dimiliki array dua dimensi dapat ditentukan dari hasil perkalian:

ukuran1 x ukuran 2. 

Seperti halnya pada array satu dimensi, data airay dua dimensi akan ditempatkan pada memori secara berurutan. Array Multidimensi / Dimensi Banyak

3.      Array berdimensi banyakatau multidimensi terdiri dari array yang tidak terbatas hanya dua dimensi saja. Bentuk umum pendeklarasian array multidimensi adalah : tipe_var nama_var [ukuranl] [ukuran2]...[ukuran n]; Contoh : int data_angka [3] [6] [6]; Yang merupakan array tiga dimensi.

POKOK BAHASAN 2

LINKED LIST (SENARAI)

Kepala (First)

Linked List adalah sejumlah objek atau elemen yang dihubungkan satu dengan lainnya sehingga membentuk suatu list. Sedangkan objek atau elemen itu sendiri adalah merupakan gabungan beberapa data (variabel) yang dijadikan satu kelompok atau structure atau record yang dibentuk dengan perintah strnct.   

Untuk menggabungkan objek satu dengan lainnya, diperlukan paling tidak sebuah variabel yang bertipe             pointer. Syarat linkedlist adalah harus dapat diketahu alamat simpul pertama atau biasa dipakai variabel             First/Start/Header. Struktur dasar sebuah list seperti gambar berikut:

Istilah-istilah dalam linked list:

 -          Simpul

Simpul terdiri dari dua bagian yaitu :

a.       Bagian data

b.      Bagian pointer yang menunjuk ke simpul berikutnya

-          First/Header

Variabel First/Header berisi alamat (pointei^/acuan (reference) yang menunjuk lokasi simpul pertama linked list, digunakan sebagai awal penelusuran linked list.

-          Nil/NuU

Tidak bernilai, digunakan untuk menyatakan tidak mengacu ke manapun.

-          Simpul Terakhir (Last)

Simpul terakhir linked list berarti tidak menunjuk simpul berikutnya. Tidak terdapat alamat disimpan di field pointer (bagian kedua dari simpul). Nilai null atau nil disimpan di field pointer di simpul terakhir.

 

Jenis-jenis linked list :

-          List Kosong

List kosong hanya terdiri dari sebuah penunjuk elemen yang berisi NULL (kosong), tidak memiliki satu buah elemen pun sehingga hanya berupa penunjuk awal elemen berisi NULL.

-          List Tunggal

POKOK BAHASAN 3

STACK (TUMPUKAN)

Stack adalah kumpulan elemen-elemen yang tersimpan dalam suatu tumpukan. Aturan penyisipan dan penghapusan elemennya tertentu:

-Penyisipan selalu dilakukan" di atas" TOP

-Penghapusan selalu dilakukan pada TOP

Karena aturan penyisipan dan penghapusan semacam itu, TOP adalah satu-satunya alamat tempat terjadi operasi, elemen yang ditambahkan paling akhir akan menjadi elemen yang akan dihapus. Dikatakan bahwa elemen Stack tersusun secara LIFO (Last In First Out).

Seperti halnya jika kita mempunyai sebuah tumpukan buku, agar tumpukan buku itu tidak ambruk ketika kita mengambil sebuah buku di dalam tumpukan itu maka harus diambil satu per satu dari tumpukan yang paling atas dari tumpukan.

Perhatikan bahwa dengan definisi semacam ini, representasi tabel sangat tepat untuk mewakili stack, karena operasi penambahan dan pengurangan hanya dilakukan disalah satu ujung tabel.

Beberapa contoh penggunaan stack adalah pemanggilan prosedur, perhitungan ekspresi ariimatika, rekursifitas, backtracking, penanganan interupsi, dan lain-lain. Karakteristik penting stack sebagai berikut:

1.      Elemen stack yaitu item-item data di elemen stack

2.      TOP (elemen puncak dari stack)

3.      Jumlah elemen pada stack

4.      Status/kondisi stack, yaitu :

-          Penuh

Bila elemen di tumpukan mencapai kapasitas maksimum tumpukan. Pada kondisi ini, tidak mungkin dilakukan penambahan ke tumpukan. Penambahan di elemen menyebabkan kondisi kesalahan Overfloyv.

-          Kosong

         Bila tidak ada elemen tumpukan. Pada kondisi ini, tidak mungkin dilakukan pengambilan elemen tumpukan. Pengambilan elemen menyebabkan kondisi kesalahan Underflow.

Stack memiliki operasi-operasi pokok sebagai berikut:

Push          : Untuk menambahkan item pada tumpukan paling atas.

void Push (ItemType x, Stack *S)

{

         if (Full (S))

                  Printf(“Stack FULL”);

         else

         {

                  S -> Item[S->Count]=x;

         }

}

Pop : Untuk mengambil item teratas

int Pop (Stack S, ItemType x)

{

         if (Empty (S))

                  Printf(“Stack Kosong”);

         else

         {

                  --(S->Count);

                  x=s->Item(s->Count);

         }

}

Clear : Untuk mengosongkan stack

void IntializeStack (Stack S)

{

         S->Count=0;

}

IsEmpty : Untuk memeriksa apakah stack kosong

int Empty (Stack *S)

{

         return (S->Count==0);

}

IsFull : Untuk memeriksa apakah stack sudah penuh

int Full (Stack S)

{

         return (S->Count==MAXSTACK);

}

 

Representasi stack:

-     Representasi statis

         Stack dengan representasi statis biasanya diimplementasikan dengan menggunakan array. Sebuah array memiliki tempat yang dialokasikan diawal sehingga sebuah elemen yang dimasukkan dalam sebuah array terbatas pada tempat yang ada pada array. Karena menggunakan array maka stack dengan representasi statis dalam mengalami kondisi elemen penuh. Ilustrasi stack dengan representasi statis dapat dilihat pada gambar 3.2 :



 

 

-     Representasi dinamis

         Stack dengan representasi dinamis biasanya diimplementasikan dengan menggunakan pointer yang menunjuk pada elemen-elemen yang dialokasikan pada memori. Ilustrasi stack dengan representasi dinamis dapat dilihat pada gambar 3.3:


 

         Karena semua operasi pada sebuah stack diawali dengan elemen yang paling atas maka jika menggunakan representasi dinamis saat elemen ditambahkan akan menggunakan penambahan elemen pada awal stack (addfirst) dan saat pengambilan atau penghapusan elemen menggunakan penghapusan di awal stack (Delfirst).

POKOK BAHASAN 4

QUEUE (ANTRIAN)


Antrian adalah suatu kumpulan data yang penambahan elemennya hanya bisa dilakukan pada suatu ujung (disebut sisi belakang atau REAR), dan penghapusan atau pengambilan elemen dilakukan lewat ujung yang lain (disebut sisi depan atau FRONT). 


Prinsip yang digunakan dalam antrian ini adalah FIFO (First In First Out) yaitu elemen yang pertama kali masuk akan keluar pertama kalinya. 


Penggunaan antrian antara lain simulasi antrian di dunia nyata (antrian pembelian

tiket), sistem jaringan komputer (pemrosesan banyak paket yang datang dari banyak koneksi pada suatu host, bridge, gateway), dan lain-lain.

Elemen Karakteristik penting antrian sebagai berikut :

a.      Elemen antrian yaitu item-item data yang terdapat dalam antrian.

b.      Head/front (elemen terdepan antrian).

c.      Tail/rear (elemen terakhir antrian).

d.      Jumlah antrian pada antrian (count).

e.       Status/kondisi antrian, ada dua yaitu :

-          Penuh

Bila elemen di antrian mencapai kapasitas maksimum antrian. Pada kondisi ini,tidak mungkin dilakukan penambahan ke antrian. Penambahan di elemen menyebabkan kondisi kesalahan Overflow

-          Kosong

Bila tidak ada elemen antrian. Pada kondisi ini, tidak mungkin dilakukan pengambilan elemen antrian. Pengambilan elemen menyebabkan kondisi kesalahan Underflow.

Operasi-operasi pokok pada antrian diantaranya adalah :

1.      Create Membuat antrian baru

NOEL(CREATE(O)) -0

FRONUCREA TE(O)) - tidak terdefinisi

REAKR(CREATE(O)) - tidak terdefinisi

2.      IsEmpty Untuk memeriksa apakah Antrian sudah penuh atau belum. ISEMPTY(O) - True, jika O adalah gueue kosong.

3.      IsFull mengecek apakah Antrian sudah penuh atau belum. ISFULL(O) - True, jika O adalah gueue penuh

4.      Engueue/Insert — menambahkan elemen ke dalam Antrian, penambahan elemen selalu ditambahkan di elemen paling belakang

REAR (INSERTIA,0)) — A

ISEMPTY (INSERTYA,0)) — FALSE

Algoritma QINSERT :

a.       IF FRONT 51 AND REAR-—N, OR IF FRONT —REAR 1, THEN OVERFLOW, RETURN

b.      IF FRONT :- NULL, THEN

SET FRONT : —-1AND REAR :—1

ELSE IF REAR-N,

THEN SET REAR

51

ELSE

SET REAR — REAR:#1

c.       SET OUEUE/REARI) :— ITEM

d.      RETURN

5.        Degueue/Remove untuk menghapus elemen terdepan/pertama dari Antrian. Algoritma ODELETE :

a.       IF FRONT :- NULL, THEN UNDERFLOW, RETURN

b.      SET ITEM :—- OUEUE[FRONT]

c.       [FIND NEW VALUE OF

FRONT) IF FRONT —

REAR, THEN

SET FRONT :— NULL AND REAR :—

NULL ELSE IF FRONT —N, THEN

SET FRONT :-1

ELSE

SET FRONT :- FRONT:

d.      RETURN

Representasi

         Queue :

Representasi

Statis

Queue dengan representasi statis biasanya diimplementasikan dengan menggunakan array. Sebuah array memiliki tempat yang dialokasikan diawal sehingga sebuah elemen yang dimasukkan dalam sebuah array terbatas pada tempat yang ada pada array. Karena menggunakan array maka gueue denganrepresentasi statis dalam mengalami kondisi elemen penuh. Ilustrasi queue denganrepresentasi statis dapat dilihat pada gambar :

 

Representasi dinamis

Queue dengan representasi dinamis biasanya diimplementasikan dengan menggunakan pointer yang menunjuk pada elemen-elemen yang dialokasikan pada memori. Ilustrasi guecue dengan representasi dinamis dapat dilihat pada


POKOK BAHASAN 5

REKURSIF

Fungsi rekursif adalah suatu fungsi yang memanggil dirinya sendiri, artinya fungsi tersebut dipanggil di dalam tubuh fungsi itu sendiri. 


Contoh menghitung nilai factorial. Rekursif sangat memudahkan untuk memecahkan permasalahan yang kompleks. Sifat-sifat rekursif :


Dapat digunakan ketika inti dari masalah terjadi berulang kali. Sedikit lebih efisien dari iterasi tapi lebih elegan. Method-methodnya dimungkinkan untuk memanggil dirinya sendiri.


Data yang berada dalam method tersebut seperti argument disimpan sementara ke dalam stack sampai method pemanggilnya diselesaikan.


POKOK BAHASAN 6

SORTING (PENGURUTAN)



Pengurutan data (sorting) didefinisikan sebagai suatu proses-untuk menyusun kembali himpunan obyek menggunakan aturan tertentu. Ada dua macam urutan yang biasa digunakan dalam proses pengurutan yaitu :

·      Urutan naik (ascending) yaitu dari data yang mempunyai nilai paling kecil sampai paling besar.

·      Urutan turun (descending) yaitu dari data yang mempunyai nilai paling besar sampai paling kecil.


Contoh : data bilangan 5, 2, 6, dan 4 dapat diurutkan naik menjadi 2, 4, 5, 6 atau diurutkan turun menjadi 6, 5, 4, 2. Pada data yang bertipe char, nilai data dikatakan lebih kecil atau lebih besar dari yang lain didasarkan pada urutan relatif (collating seguence) seperti dinyatakan dalam tabel ASCIL. 


Keuntungan dari data yang sudah dalam keadaan terurut yaitu :

Data mudah dicari, mudah untuk dibetulkan, dihapus, disisipi atau digabungkan. Dalam keadaan terurutkan, kita mudah melakukan pengecekan apakah ada data yang hilang. Misalnya kamus bahasa, buku telepon. Mempercepat proses pencarian data yang harus dilakukan berulang kali.


Beberapa faktor yang berpengaruh pada efektifitas suatu algoritma pengurutan antara lain :

Banyak data yang diurutkan. Kapasitas pengingat apakah mampu menyimpan semua data yng kita miliki.Tempat penyimpanan data, misalnya piringan, pita atau kartu, dll.

Beberapa algoritma metode pengurutan dan prosedurnya sebagai berikut :

1.     Bubble Sort

Bubble Sort adalah suatu metode pengurutan yang membandingkan elemen yang sekarang dengan elemen berikutnya. Apabila elemen sekarang » elemen berikutnya, maka posisinya ditukar. Kalau tidak, tidak perlu ditukar. Diberi nama “Bubble” karena proses pengurutan secara berangsur-angsur bergerak/berpindah ke posisinya yang tepat, seperti gelembung yang keluar dari sebuah gelas bersoda. 


2.    Selection Sort

Metode seleksi melakukan pengurutan dengan cara mencari data yang terkecil kemudian menukarkannya dengan data yang digunakan sebagai acuan atau sering dinamakan pivot. Selama proses, pembandingan dan pengubahan hanya dilakukan pada indeks pembanding saja, pertukaran data secara fisik terjadi pada akhir proses.


3.        Merger Sort

Algoritma Merge Sort ialah algoritma pengurutan yang berdasarkan pada strategi divide and conguer. Algoritma ini terdiri dari dua bagian utama, pembagian list yang diberikan untuk di-sort ke dalam beberapa sublist yang lebih kecil, dan sort (mengurutkan) dan merge (menggabungkan) sublist-sublist yang lebih kecil ke dalam list hasil yang sudah diurutkan. 


Pembagian bisa dikatakan cukup mudah karena sublist-sublist tersebut dibagi ke dalam dua sublist yang ukurannya adalah setengah dari ukuran semula. Hal ini terus diulang sampai sublist itu cukup kecil untuk di-sort secara efisien (umumnya telah terdiri dari satu atau dua elemen). Dalam langkah merge dua sublisi disatukan kembali dan diurutkan pada saat yang sama. 


Sekian rangkuman yang dapat saya ambil dari praktikum Algoritma Dan Sruktur Data, Untuk kurang lebih nya dari rangkuman saya ,saya minta maaf Wassalamualaikum Wr. Wb.



Komentar