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 :
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
Posting Komentar