Anda di halaman 1dari 17

UTS STRUKTUR DATA

Nama : Riyad Zaenal Muttaqin


NIM : 1770231015
Kelas : Teknik Informatika Semester 7 ( Reguler Malam B1)

1. Dalam bentuknya array dapat kita tinjau dari segi pengaturan struktur
datanya dalam konteks dimensi sebutkan dan jelaskan !
a. Array 1 dimensi adalah kumpulan (sekelompok) data yang memiliki nama
variabel dan tipe data yang sama.
Array 1 dimensi hanya bisa diakses dengan satu buah indeks.

Cara Membaca Array 1 Dimensi


Ini format untuk membaca Array 1 dimensi:

nama_aray[index_aray]
Contoh, kalau kalian ingin membaca elemen array yang ada di indeks ketiga
pada array yang isinya nama deret, penulisannya sebagai berikut:

deret[3].

b. Array 2 dimensi adalah kumpulan (sekelompok) data yang memiliki nama


variabel dan tipe data yang sama yang mana elemen-nya bisa diakses
dengan
2 buah indeks (baris dan kolom).
Ini adalah format deklarasi variabel Array 2 dimensi dalam sebuah algoritma:
var nama_variable:array[index_baris][index_kolom] of tipe_data

Jika digambarkan, array 2 dimensi seperti tabel yang memiliki indeks baris
dan kolom. Indeks inilah yang digunakan untuk mengakses elemen array
dalam pemrograman.

Cara Membaca Array 2 Dimensi

Array 2 dimensi hampir sama dengan array 1 dimensi, bedanya ketika


membaca variabel array 2 dimensi, kita harus melihat indeks baris dan indeks
kolom. Semisal, ketika membaca indeks kolom 1 dan baris 2:

data[2][1]

Dari array 1 dimensi dan array 2 dimensi, kalian dapat melihat bentuk umum
array yang penulis cantumkan di atas.

c. Array 3 dimensi, contohnya: matriks (3 dimensi)

d. Array multi-dimensi, pada prinsipnya, secara teori jumlah dimensi dari matriks
tidak terbatas, yang membatasi adalah kemampuan hardware dan besar dari
memori.

2. Apa yang dimaksud dengan Searching, jelaskan operasi-operasi searching


data dalam Struktur data

Searching adalah pencarian data dengan cara menelusuri data-data tersebut.


Tempat pencarian data dapat berupa array dalam memori, bisa juga pada file
pada external storage.
a. Sequential Search Adalah suatu teknik pencarian data dalam array (1
dimensi) yang akan menelusuri semua elemen-elemen array dari awal sampai
akhir, dimana data-data tidak perlu diurutkan terlebih dahulu.

b. Binary Search Adalah teknik pencarian data dalam dengan cara membagi
data menjadi dua bagian setiap kali terjadi proses pengurutan. Data yang ada
harus diurutkan terlebih dahulu berdasarkan suatu urutan tertentu yang
dijadikan kunci pencarian.
Prinsip pencarian biner adalah:
• Data diambil dari posisi 1 sampai posisi akhir N
• Kemudian cari posisi data tengah dengan rumus (posisi awal +
posisi akhir) / 2
• Kemudian data yang dicari dibandingkan dengan data yang di
tengah, apakah sama atau lebih kecil, atau lebih besar?
• Jika lebih besar, maka proses pencarian dicari dengan posisi awal
adalah posisi tengah + 1
• Jika lebih kecil, maka proses pencarian dicari dengan posisi akhir
adalah posisi tengah – 1
• Jika data sama, berarti ketemu.

c. Interpolation Search Teknik ini dilakukan pada data yang sudah terurut
berdasarkan kunci tertentu
Teknik searching ini dilakukan dengan perkiraan letak data.
Contoh ilustrasi: jika kita hendak mencari suatu nama di dalam buku telepon,
misal yang berawalan dengan huruf T, maka kita tidak akan mencarinya dari
awal buku, tapi kita langsung membukanya pada 2/3 atau ¾ dari tebal buku.
Jadi kita mencari data secara relatif terhadap jumlah data.

3. Sorting merupakan suatu proses (operasi) yang mengurutkan data dalam suatu
urutan yang diberikan (increasing atau decreasing).
a. Buble sort, merupakan algoritma pengurutan paling tua dengan metode
pengurutan paling sederhana. Pengurutan yang dilakukan dengan
membandingkan masing-masing item dalam suatu list secara berpasangan,
menukar item jika diperlukan, dan mengulaginya sampai akhir list secara
berurutan, sehingga tidak ada lagi item yang dapat ditukar.
b. Selection Sort, Ide utama dari algoritma selection sort adalah memilih elemen
dengan nilai paling rendah dan menukar elemen yang terpilih dengan elemen
ke-i. Nilai dari i dimulai dari 1 ke n, dimana n adalah jumlah total elemen
dikurangi 1.

c. Insertion Sort, algoritma insertion sort pada dasarnya memilah data yang
akan diurutkan menjadi dua bagian, yang belum diurutkan dan yang sudah
diurutkan. Elemen pertama diambil dari bagian array yang belum diurutkan
dan kemudian diletakkan sesuai posisinya pada bagian lain dari array yang
telah diurutkan. Langkah ini dilakukan secara berulang hingga tidak ada lagi
elemen yang tersisa pada bagian array yang belum diurutkan.
d. Shell sort, merupakan algoritma yang stau jenis dengan insertion sort,
dimana pada setiap nilai i dalam n/i item diurutkan. Pada setiap pergantian
nilai, i dikurangi sampai 1 sebagai nilai terakhir.

e. Merge Sort, Algoritma dirumuskan dalam 3 langkah berpola divide-and-


conquer. Berikut menjelaskan langkah kerja dari Merge sort :
1. Divide
Memilah elemen – elemen dari rangkaian data menjadi dua bagian.
2. Conquer
Conquer setiap bagian dengan memanggil prosedur merge sort secara
rekursif
3. Kombinasi
Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan
rangkaian data berurutan.

Proses rekursi berhenti jika mencapai elemen dasar. Hal ini terjadi bilamana
bagian yang akan diurutkan menyisakan tepat satu elemen. Sisa pengurutan
satu elemen tersebut menandakan bahwa bagian tersebut telah terurut sesuai
rangkaian.

4. 10 Sorting (Pengurutan)
1. Buble sort, merupakan algoritma pengurutan paling tua dengan metode
pengurutan paling sederhana. Pengurutan yang dilakukan dengan
membandingkan masing-masing item dalam suatu list secara berpasangan,
menukar item jika diperlukan, dan mengulaginya sampai akhir list secara
berurutan, sehingga tidak ada lagi item yang dapat ditukar.
Implementasi
echo "//bubble sortn";

$data=array(6,5,3,1,8,7,2,4);

function bubble_sort($data){

$n=count($data);

for ($i = 0;$i<$n;$i++){ for ($j = $n-1;$j>$i;$j--)


{

if ($data[$j] < $data[$j-1]){

$dummy=$data[$j];

$data[$j]=$data[$j-1];

$data[$j-1]=$dummy;

return $data;

print_r(bubble_sort($data));

2. Selection Sort, Ide utama dari algoritma selection sort adalah memilih
elemen dengan nilai paling rendah dan menukar elemen yang terpilih
dengan elemen ke-i. Nilai dari i dimulai dari 1 ke n, dimana n adalah
jumlah total elemen dikurangi 1.
Implementasi
echo "//selection sortn";

$data=array(6,5,3,1,8,7,2,4);

function selection_sort($data){

$n=count($data);

for ($i = 0;$i<$n;$i++){

$k = $i;

for ($j = $i+1;$j<$n;$j++){

if ($data[$j] < $data[$k]) $k = $j;

$dummy=$data[$i];

$data[$i]=$data[$k];

$data[$k]=$dummy;

return $data;

print_r(selection_sort($data));

3. Insertion Sort, algoritma insertion sort pada dasarnya memilah data


yang akan diurutkan menjadi dua bagian, yang belum diurutkan dan yang
sudah diurutkan. Elemen pertama diambil dari bagian array yang belum
diurutkan dan kemudian diletakkan sesuai posisinya pada bagian lain dari
array yang telah diurutkan. Langkah ini dilakukan secara berulang hingga
tidak ada lagi elemen yang tersisa pada bagian array yang belum
diurutkan.
Implementasi
echo "//insertion sortn";

$data=array(6,5,3,1,8,7,2,4);

function insertion_sort($data){

$n=count($data);

for ($i = 1;$i<$n;$i++){ for ($k = $i; $k>0; $k--) {

if($data[$k]<$data[$k-1]){

$dummy=$data[$k];

$data[$k]=$data[$k-1];

$data[$k-1]=$dummy;

return $data;

print_r(insertion_sort($data));

4. Shell sort, merupakan algoritma yang stau jenis dengan insertion sort,
dimana pada setiap nilai i dalam n/i item diurutkan. Pada setiap
pergantian nilai, i dikurangi sampai 1 sebagai nilai terakhir.

Implementasi :
echo "//shell sortn";

$data=array(6,5,3,1,8,7,2,4);

function shell_sort($data){

$n=count($data);

$k=0;

$gap[0]=(int) ($n / 2);


while($gap[$k]>1){

$k++;

$gap[$k]=(int)($gap[$k-1]/2);

for($i=0;$i<=$k;$i++){

$step=$gap[$i];

for($j=$step;$j<$n;$j++){

$temp=$data[$j];

$p=$j-$step;

while($p>=0 && $temp<$data[$p]){

$data[$p+$step]=$data[$p];

$p=$p-$step;

$data[$p+$step]=$temp;

return $data;

print_r(shell_sort($data));

5. Merge Sort, Algoritma dirumuskan dalam 3 langkah berpola divide-and-


conquer. Berikut menjelaskan langkah kerja dari Merge sort :
1. Divide
Memilah elemen – elemen dari rangkaian data menjadi dua bagian.
2. Conquer
Conquer setiap bagian dengan memanggil prosedur merge sort secara
rekursif
3. Kombinasi
Mengkombinasikan dua bagian tersebut secara rekursif untuk
mendapatkan rangkaian data berurutan.

Proses rekursi berhenti jika mencapai elemen dasar. Hal ini terjadi
bilamana bagian yang akan diurutkan menyisakan tepat satu elemen.
Sisa pengurutan satu elemen tersebut menandakan bahwa bagian
tersebut telah terurut sesuai rangkaian.

Implementasi :
echo "//merge sortn";

$data=array(6,5,3,1,8,7,2,4);

function merge_sort ($data){

if (count($data) <= 1 ) return $data;

$left = merge_sort(array_splice($data,floor(count($data) /
2)));

$right = merge_sort($data);

$result = array();

while (count($left) > 0 && count($right) > 0){

if ($left[0] <= $right[0])

array_push($result, array_shift($left));

else

array_push($result, array_shift($right));

while (count($left) > 0)

array_push($result, array_shift($left));

while (count($right) > 0)

array_push($result, array_shift($right));

return $result;

print_r(merge_sort($data));

6. Quick Sort
Algoritma ini berdasar pada pola divide-and-conquer. Berbeda dengan
merge sort, algoritma ini hanya mengikuti langkah – langkah sebagai
berikut :

- Divide
Memilah rangkaian data menjadi dua sub-rangkaian A[p…q-1] dan
A[q+1…r] dimana setiap elemen A[p…q-1] adalah kurang dari atau sama
dengan A[q] dan setiap elemen pada A[q+1…r] adalah lebih besar atau
sama dengan elemen pada A[q]. A[q] disebut sebagai elemen pivot.
Perhitungan pada elemen q merupakan salah satu bagian dari prosedur
pemisahan.

- Conquer
Mengurutkan elemen pada sub-rangkaian secara rekursif. Pada algoritma
quicksort, langkah ”kombinasi” tidak di lakukan karena telah terjadi
pengurutan elemen – elemen pada sub-array.

Implementasi :

echo "//quick sortn";

$data=array(6,5,3,1,8,7,2,4);

function quick_sort($data) {

if(!count($data)) return $data;

$pivot= $data[0];

$low = $high = array();

$n = count($data);

for($i=1; $i < $n; $i++) {

if($data[$i] <= $pivot) {

$low [] = $data[$i];

} else {

$high[] = $data[$i];

return array_merge(quick_sort($low), array($pivot), quick_


sort($high));

}
print_r(quick_sort($data));

7. Heap Sort
Heap sort adalah sorting yang menggunakan struktur data heap, dengan
nilai parent selalu lebih besar dari pada nilai childnya.

Algoritma :
- Buat suatu heap.
- Ambil isi dari root masukkan kedalam sebuah array.
- Hapus element root dengan mempertahankan properti heap.
- Ulangi sampai tree menjadi kosong

Implementasi :
echo "//heap sortn";

$data=array(6,5,3,1,8,7,2,4);

function build_heap(&$data, $i, $t){

$tmp_var = $data[$i];

$j = $i * 2 + 1;

while ($j <= $t) {

if($j < $t)

if($data[$j] < $data[$j + 1]) {

$j = $j + 1;

if($tmp_var < $data[$j]) {

$data[$i] = $data[$j];

$i = $j;
$j = 2 * $i + 1;

} else {

$j = $t + 1;

$data[$i] = $tmp_var;

function heap_sort(&$data) {

$init = (int)floor((count($data) - 1) / 2);

for($i=$init; $i >= 0; $i--){

$count = count($data) - 1;

build_heap($data, $i, $count);

for ($i = (count($data) - 1); $i >= 1; $i--) {

$tmp_var = $data[0];

$data[0] = $data[$i];

$data[$i] = $tmp_var;

build_heap($data, 0, $i - 1);

heap_sort($data);

print_r($data);
8. Radix Sort
Radix Sort adalah metode sorting tanpa pembandingan dengan kata lain,
sorting Non-Comparasion sort dimana dalam prosesnya tidak melakukan
perbandingan antar data. Secara umum yang proses yang dilakukan
dalam metode ini adalah mengklasifikasikan data sesuai dengan kategori
terurut yang tertentu dan dalam tiap kategorinya dilakukan
pengklasifikasian lagi dan seterusnya sesuai dengan kebutuhan. Dan
kemudian subkategori- subkategori tersebut digabungkan kembali, yang
secara dilakukan hanya dengan metode sederhana concatenation.

Implementasi :

#include

#include

main()

int a, b, leng, data[100], d, m, temp[100], index;

printf(“Banyak data : “);

scanf(“%d”,&leng);

for (a=0;a

printf(“data %d = “,a+1);

scanf(“%d”,&d);

if (d<1000) { data[a]=d; } else a–; }

printf(“\nData Anda: “); for (a=0;a {

printf(“\nData %d= %d “,a+1,data[a]); } index=0; for (a=0;


a<=9;a++) //lsb sort for (b=0;b { if (data[b]<100) { m=dat
a[b]%10; } else { m=data[b]%100; m=m%10; } if (m==a) { tem
p[index]=data[b]; index++; } } for (a=0;a<=9;a++) { data[a
]=temp[a]; } index=0; for (a=0;a<=9;a++) //csb sort for (b
=0;b { if (data[b]<100) { m=data[b]/10; } else { m=data[b]
%100; m=m/10; } if (m==a) { temp[index]=data[b]; index++;
} } for (a=0;a<=9;a++) { data[a]=temp[a]; } index=0; for (
a=0;a<=9;a++) //msb sort for (b=0;b { m=data[b]/100; if (m
==a) { temp[index]=data[b]; index++; } } for (a=0;a<=9;a++
) { data[a]=temp[a]; } printf(“\n\nSetelah di Sorting\n”);
for (a=0;a<(leng);a++) { printf(“%d”,data[a]); printf(“\n”
); } }
9. Tree Sort
Tree sort adalah metode sorting dengan cara membangun pohon biner
dengan menampilkan 3 hasik output:

Pre Order, In Order, Post Order.

Perhatikan gambar di bawah ini.

Ketentuan dari gambar diatas adalah :

1. Menjadi akar ,
2. Menjadi subtree kiri,
3. Menjadi subtree kanan,
4. Menjadi daun dari subtree kiri ,
5. Menjadi daun dari subtree kanan.
Implementasi Tree Sort dalam bahasa C++
10. Exchange Sort

Melakukan pembandingan antara data, dan melakukan pertukaran apabila


urutan yang didapat belum sesuai. Bisa dikatakan Bubble sort sama dengan
Exchange Sort karena kedua metode ini melakukan pertukaran berulang-
ulang terhadap elemen data yang belum diurutkan.

Perbedaan :

• 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 tersebut itu akan menjadi pusat (pivot) untuk dibandingkan
dengan elemen sebelumnya/sesudahnya lagi, begitu seterusnya.

Implementasi :
5. Kota : Array[1..10,1..3] of string[10]

a11 a12 a13


a21 a22 a23
a31 a32 a33
a41 a42 a43
a51 a52 a53
a61 a62 a63
a71 a72 a73
a81 a82 a83
a91 a92 a93
a101 a102 a103

Gambarkan secara logika dan fisik jika dipecah secara baris !


a11 a12 a13 a21 a22 a23 a31 a32 a33 a41 a42 a43 a51 a52 a53

a61 a62 a63 a71 a72 a73 a81 a82 a83 a91 a92 a93 a101 a102 a103

Gambarkan secara logika dan fisik jika dipecah secara Kolom !


a11 a21 a31 a41 a51 a61 a71 a81 a91 a101

a12 a22 a32 a42 a52 a62 a72 a82 a92 a102

a13 a23 a33 a43 a53 a63 a73 a83 a93 a103

Hitung berapa besar memorinya !


M =XxYxL
= 10 x 3 x 2
= 60 Byte Memory

Anda mungkin juga menyukai