STRUKTUR DATA
NAMA MAHASISWA :
SUPRATMAN
NIM:2104082
POKOK PEMBAHASAN:
1. MATERI SEARCHING
2. MATERI SORTING
DOSEN PENGAMPU:
AGUNG SETIAWAN,S,Kom,, MM., M.Kom
Bismillahirrahmanirrahim.
Assalamu’alaikum Wr.Wb.
kekurangan dan jauh dari sempurna, oleh karena itu saran dan kritik
dimasa yang akan datang. Semoga Makalah STD ini, dapat bermanfaat
terima kasih.
MATERI SEARCHING
keynya adalah A.
Reord sendiri adalah tipe data yang terdiri atas kumpulan variabel
kunjungan pohon.
sama juga dilakukan pada proses penambahan (insert) data yang baru.
a. Pencarian Linier/Sekuensial
Kemungkinan terbaik (best case) adalah jika data yang dicari terletak
Prinsip kerja dari Sequential Searching ini adalah semua data di cek
Pencarian linier:
Diketahui sebuah tabel TabInt [1..N] yang telah berisi nilai dengan tipe
integer. Jika pada tabel tersebut akan dicari apakah harga/nilai X ada
kalinya akan bernilai tidak sama dengan nol (I ¹ 0). I diberi harga 0 jika
pertama diketemukan.
Contoh: 13 87 14 21 75 53
Misal nilai yang dicari adalah X = 21, maka elemen yang diperiksa
adalah 13, 87, 14, 21. (ditemukan) Jadi indeks larik yang
dikembalikan : I = 4.
Misal nilai yang dicari adalah X = 15, maka elemen yang diperiksa
adalah 13, 87, 14, 21, 75, 53. (tidak ditemukan) Jadi indeks larik
yang dikembalikan : I = 0.
DETAIL PROGRAM
#include <stdio.h>
#include <conio.h>
void main(){
clrscr();
int cari;
int flag=0;
"); scanf("%d",&cari);
for(int i=0;i<21;i++){
dan isinya terurut membesar ( untuk setiap i anggota dari [1..N-1], Ti <
T i+1). Jika pada tabel tersebut akan dicari apakah harga/nilai X ada
sampai dengan harga X yang beinilai lebih besar dari nilai elemen
suatu posisi yang sedang diakses pada tabel. Apabila niali X ditemukan
bernilai tidak sama dengan nol (I ¹ 0). I diberi harga 0 jika pencarian
tidak ketemu.
Misal nilai yang dicari adalah X = 100, maka elemen yang diperiksa
adalah 55, 56, 78, 80, 100. (ditemukan) Jadi indeks larik yang
dikembalikan : I = 5.
Misal nilai yang dicari adalah X = 170, maka elemen yang diperiksa
adalah 55, 56, 78, 80, 100, 156, 199. (tidak ditemukan) Jadi indeks
#include <stdio.h>
#include <conio.h>
void main(){
clrscr();
int cari;
int flag=0;
"); scanf("%d",&cari);
for(int i=0;i<100;i++){
indeksnya.
Program menggunakan sebuah variable flag yang berguna untuk
menandai ada atau tidaknya data yang dicari dalam array data.
Jika ditemukan, maka flag akan di set menjadi satu, jika tidak ada
maka flag akan tetap bernilai 0.
Semua elemen array data akan dibandingkan satu per satu dengan
data yang dicari dan diinputkan oleh user.
a. Contoh program
Program pencarian ;
Uses crt;
Label 1;
Var
Bil,I,n:integer;
ul:char;
procedure tampil;
begin
for i:=1 to n do
begin
end;
end;
procedure seq_search;
begin
i : =1;
while (I <n) and (L[i] <> bil) do
begin
i:=i+1;
end;
if (L[i]=bil)then
else
end;
begin
1:
Clrscr;
Writeln (‘----------------------------------------------------------’);
Writeln (‘----------------------------------------------------------‘);
Tampil;
Seq_search;
Writeln ;
Delay (3000);
Goto 1 ;
Readkey;
End.
a. Pencarian Binner
saat pencarian data, 1 kelompok data yang sudah urut dibagi menjadi 2
sekumpulan data nama yang sudah terurut. Apabila kelompok data ini
Hanya bisa berfungsi pada data yang sudah terurut ( sorted), ini
type
var
begin
Awal:= Low(Arr);
Akhir:= High(Arr);
Ketemu:= -1;
end;
end;
CariBiner:= Ketemu;
end;
penjelasannya :
type
LongInt;
var
begin
pencarian
dicari,
1),
1) }
begin
Awal:= Tengah+1;
end;
end;
CariBiner:= Ketemu;
end;
KESIMPULAN
MATERI SORTING
1. Sorting
a. Insertion Sort
Salah satu algoritma sorting yang paling sederhana adalah insertion
anda ingin mengurutkan satu set kartu dari kartu yang bernilai paling
kecil hingga yang paling besar. Seluruh kartu diletakkan pada meja,
sebutlah meja ini sebagai meja pertama, disusun dari kiri ke kanan dan
atas ke bawah. Kemudian kita mempunyai meja yang lain, meja kedua,
yang terletak pada pojok kiri atas meja pertama dan letakkan pada meja
kedua. Ambil kartu kedua dari meja pertama, bandingkan dengan kartu
yang berada pada meja kedua, kemudian letakkan pada urutan yang
seluruh kartu pada meja pertama telah diletakkan berurutan pada meja
dan yang sudah diurutkan (meja kedua). Elemen pertama diambil dari
posisinya pada bagian lain dari array yang telah diurutkan. Langkah ini
dilakukan secara berulang hingga tidak ada lagi elemen yang tersisa
int endIdx) {
int k = i;
if(((Comparable) array[k]).compareTo(array[j])>0)
k = j;
swap(array[i],array[k]);
b. Selection Sort
Jika anda diminta untuk membuat algoritma sorting tersendiri, anda
linier pada sebuah meja dari kiri ke kanan, dan dari atas ke bawah.
Pilih nilai kartu yang paling rendah, kemudian tukarkan posisi kartu ini
dengan kartu yang terletak pada pojok kiri atas meja. Lalu cari kartu
dengan nilai paling rendah diantara sisa kartu yang tersedia. Tukarkan
kartu yang baru saja terpilih dengan kartu pada posisi kedua. Ulangi
rendah.
nilai paling rendah dan menukar elemen yang terpilih dengan elemen
elemen dikurangi 1.
Algoritmanya:
int min;
min = i;
if ((( Comparable ) array [min] ) . compareTo (array[j])>0) {
min = j;
swap(array[min], array[i]);
c. Merge Sort
Beberapa algoritma mengimplementasikan konsep rekursi untuk
1. Divide
Memilah masalah menjadi sub masalah.
2. Conquer
Selesaikan sub masalah tersebut secara rekursif. Jika sub-masalah
3. Kombinasi
Mengkombinasikan solusi dari sub-masalah, yang akan
1. Divide
Memilah elemen – elemen dari rangkaian data menjadi dua bagian.
2. Conquer
rekursif.
3. Kombinasi
Mengkombinasikan dua bagian tersebut secara rekursif untuk
Proses rekursi berhenti jika mencapai elemen dasar. Hal ini terjadi
Algoritmanya:
sebagai berikut:
1. Divide
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
2. Conquer
Mengurutkan elemen pada sub-rangkaian secara rekursif
Pada algoritma quicksort, langkah “kombinasi” tidak di lakukan
Algoritmanya :
rightIdx) {
int pivotIdx;
/* Kondisi Terminasi */
}
e. Bubble Sort
Bubble Sort merupakan cara pengurutan yang sederhana. Konsep dari
ide dasarnya adalah seperti “gelembung air” untuk elemen struktur data
f. Searching
a) Linear Searching
Algoritma pencarian secara linear adalah algoritma untuk mencari
sebuah nilai pada table sambarang dengan cara melakukan pass atau
transversal. Transversal dari awal sampai akhir table. Ada dua macam
int i;/*Algoritma*/
i = 1;
i = i + 1;
if (T[i]==value){
*idx = i;
else{
*idx = 0;
int i;
boolean found;/*algoritma*/
i = 1;
found = false;
found = true;
else{
i = i + 1;
if (found){
*idx = i;
else{
*idx = 0;
b) Binary Searching
Algoritma pencairan secara linear melakukan pengulangan sebanyak 1
kali untuk kasus terbaik (value sama dengan elemen pertama dalam
tabel) dan Nmax kali untuk kasus terburuk. Sehingga algoritma ini
berikut.
idx)
int i,j,mid;
boolean found;$
/*algoritma*/
found = false;
i = 1;
j = Nmax;
if (T[mid] == value){
found = true;
else{
if (T[mid]<value)
i = mid + 1;
else{
j = mid – 1;
if (found){
*idx = mid;
else{
*idx = 0;
}
Algoritma pencarian biner adalah algoritma untuk mencari sebuah nilai
pada tabel teurut dengan cara menghilangkan setengah data pada setiap
langkah. Algoritma ini mencari nilai yang dicari dengan tiga langkah
yaitu :
dan sesuai.