Struktur data
adalah cara menyimpan atau merepresentasikan data di dalam komputer agar bisa
di pakai secara efisien. Sedangkan data adalah representasi dari fakta dunia
nyata.
Fakta atau
keterangan tentang kenyataan yang di simpan, di rekam atau di representasikan
dalam bentuk tulisan, suara, gambar, sinyal atau symbol.
Secara garis besar type data dapat di
kategorikan menjadi :
1. Type
data sederhana
a. Type data sederhana tunggal, misalnya Integer,
real, boolean dan karakter
b. Type data sederhana majemuk, misalnya String
2. Struktur
Data, meliputi
a. Struktur data sederhana, misalnya array
dan record
b. Struktur data
majemuk, yang terdiri dari
Linier: Stack, Queue, Daftar Serta Dan Multilist
Non Linier
: Pohon Biner dan Graph
Pemakaian
struktur data yang tepat di dalam proses pemrograman akan menghasilkan
algoritma yang lebih jelas dan tepat, sehingga menjadikan program secara
keseluruhan lebih efisien dan sederhana.
Struktur data yang ″standar″ yang biasanya
digunakan di bidang informatika adalah :
- List linier (Linked List) dan variasinya Multilist
- Stack (Tumpukan)
- Queue (Antrian)
- Tree (Pohon)
- Grafis (Graf)
- RECORD (REKAMAN)
Disusun oleh
satu atau lebih field. Tiap field menyimpan data dari tipe dasar tertentu atau
dari tipe bentukan lain yang sudah di definisikan sebelumnya. Nama rekaman di tentukan
oleh pemrogram.
Rekaman disebut
juga tipe terstruktur.
Contoh:
- ketik Titik: record <x: real, y: real>
jika P
dideklarasikan sebagai Titik maka mengacu field pada P adalah P.x dan P.y.
- Di definisikan tipe terstruktur yang mewakili Jam yang terdiri atas
jam (hh), menit (mm) dan detik (ss), maka cara menulis type Jam adalah :
Jenis JAM: record <hh: integer, {0 ... 23}
mm: integer, {0 ... 59}
ss: integer {0 ... 59}>
Jika J
adalah peubah (variabel) bertipe Jam
maka cara
mengacu tiap field adalah J.hh, J.mm dan J.ss
Terjemahan dalam bahasa C:
- ketik Titik: record <x: real, y: real>
di terjemahkan menjadi:
typedef struct {float x;
ringan;
} Titik;
- Jenis JAM: record
<hh: integer, {0 ... 23}
mm: integer, {0 ... 59}
ss: integer {0 ... 59}
>
di terjemahkan menjadi:
typedef struct
{Int jj; / * 0 ... 23 * /
int mm; / * 0 ... 59 * /
int ss; / * 0 ... 59 * /
} Selai;
A. Apa Itu Linked List?
Linked list atau di kenal juga dengan sebutan senarai berantai
adalah struktur data yang terdiri dari urutan record data dimana setiap record
memliki field yang menyimpan alamat/referensi dari record selanjutnya (dalam
urutan) elemen data yang di hubungkan dengan link pada linked list disebut
Node. Biasanya di dalam suatu lnked list, terdapat istilah head and tail.
·
Head adalah elemen yang berada pada posisi pertama dalam suatu
linked list
·
Tail adalah element yang berada pada posisis terakhir dalam suatu
linked list
Ada beberapa macam Linked List, yaitu:
1.
Satu Linked Daftar
Single Linked List merupakan suatu linked list yang hanya memiliki satu variabel pointer saja.
Dimana pointer tersebut menunjuk ke node selanjutnya. Biasanya field pada tail menunjuk ke NULL
Contoh:
Contoh Codingannya:
struct
Mahasiswa{
char
nama[25];
int
usia;
struct
Mahasiswa *next;
} * kepala, ekor *;
2.
Daftar ganda Linked
Double
Linked List Merupakan suatau linked list yang memiliki dua variabel pointer
yaitu pointer yang menunjuk ke node selanjutnya dan pointer yang menunuk ke
node sebelumnya. Setiap head dan tailnya juga menunjuk ke NULL
Contoh:

Contoh Codingannya:
Struct Mahasiswa{
char
nama[25];
int
usia;
struct Mahasiswa * berikutnya, * prev;
} * kepala, ekor *;
3.
Daftar Edaran Linked
Circular
Linked List merupakan suatu linked list dimana tail (node terakhir) menunjuk ke
head (node pertama). Jadi tidak ada pointer yang menunjuk NULL ada 2 jenis
Circular Linked List Yaitu:
·
Edaran Tunggal Linked Daftar
Contoh:
·
Edaran ganda Linked Daftar
Contoh:
4.
Beberapa Linked Daftar
Multi
Linked List Merupakan Suatu Linked List yang Memiliki Lebih dari 2 buat
variabel pointer
Contoh:
B. STACK
Pengertian Stack pada Struktur Data adalah sebagai tumpukan dari benda, sekelompok data yang tampaknya di letakkan di atas data yang lain, koleksi dari objek-objek homogen, atau suatu urutan elemen yang elemennya dapat di ambil dan di tambah hanya pada posisi akhir (top ) saja. Stack pada Struktur Data dapat di ilustrasikan dengan dua buah kotak yang di tumpuk, kotak yang satu akan di tumpuk diatas kotak yang lainnya. Jika kemudian stack 2 kotak tadi, di tambah kotak ketiga, keempat, kelima, dan seterusnya, maka akan di peroleh sebuah tumpukan kotak yang terdiri dari N kotak.
Stack bersifat LIFO (Last In
First Out) artinya Benda yang terakhir masuk ke dalam stack akan menjadi
yang pertama keluar dari stack
Operasi-operasi yang biasanya tredapat pada Stack yaitu:
- Push : digunakan untuk menambah item pada
stack pada tumpukan paling atas
- Pop : 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
Cara
mendefenisikan Stack dengan Array of Struct yaitu:
- Definisikan Stack dengan menggunakan struct
- Definisikan konstanta MAX_STACK untuk menyimpan maksimum isi stack
- Buatlah variabel array data sebagai implementasi stack
- Deklarasikan operasi-operasi/function di atas dan buat implemetasinya.
Contoh :
//Deklarasi
MAX_STACK
#define MAX_STACK 10
//Deklarasi
STACK dengan struct dan array data
typedef struct STACK {
int top;
data char [10] [10];
};
//Deklarasi/buat
variabel dari struct
STACK tumpuk;
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
IsFull berfungsi untuk memeriksa
apakah stack sudah penuh atau tidak. 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.
Ilustrasi Stack pada kondisi Full
IsEmpty berfungsi untuk memeriksa apakah stack masih kosong atau tidak. Dengan cara memeriksa top of stack, jika masih -1 maka berarti stack masih kosong.
Push berfungsi untuk memasukkan elemen ke stack, selalu menjadi elemen teratas stack (yang ditunjuk oleh TOS).
Tambah satu
(increment) nilai top of stack lebih dahulu setiap kali ada penambahan
elemen stack.
Asalkan stack
masih belum penuh, isikan data baru ke stack berdasarkan indeks top of stack
setelah diincrement sebelumnya.
Pop berfungsi untuk mengambil elemen teratas (data yang ditunjuk oleh TOS) dari stack.
Ambil dahulu
nilai elemen teratas stack dengan mengakses top of stack, tampilkan nilai yang
akan dipop, baru dilakukan decrement nilai top of stack sehingga jumlah elemen
stack berkurang.
Printberfungsi 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.
C. ANTRIAN
Queue pada Struktur Data atau antrian
adalah sekumpulan data yang mana penambahan elemen hanya bisa dilakukan pada
suatu ujung disebut dengan sisibelakang(rear), dan penghapusan(pengambilan
elemen) dilakukan lewat ujung lain (disebut dengan sisi depan atau
front).
Pada Stack atau tumpukan menggunakan
prinsip“Masuk terakhir keluar pertama”atau LIFO (Last In First Out), Maka
pada Queue atau antrian prinsip yang
digunakan adalah “Masuk Pertama Keluar Pertama” atau FIFO (First In First Out).
Queue atau antrian banyak kita
jumpai dalam kehidupan sehari-hari, ex: antrian Mobil diloket Tol, Antrian
mahasiswa Mendaftar, dll.
Contoh lain dalam bidang komputer adalah
pemakaian sistem komputer berbagi waktu(time-sharing computer system) dimana
ada sejumlah pemakai yang akan menggunakan sistem tersebut secara serempak.
Pada Queue atau antrian Terdapat satu
buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya
dimana membutuhkan variabel Head dan Tail ( depan/front, belakang/rear).
- elemen antrian
- front (elemen terdepan
antrian)
- tail (elemen terakhir)
- jumlah elemen pada
antrian
- status antrian
- tambah(menambah item pada
belakang antrian)
- hapus (menghapus elemen
depan dari antrian)
- kosong( mendeteksi apakah
pada antrian mengandung elemen atau tidak)
1.
Buat ()
Untuk menciptakan dan menginisialisasi Queue
Dengan cara membuat Head dan Tail = -1
2. IsEmpty ()
Untuk memeriksa apakah Antrian sudah penuh atau belum
Dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty
Kita tidak memeriksa Head, karena Head adalah tanda untuk kepala antrian
(elemen pertama dalam antrian) yang tidak akan berubah-ubah
Pergerakan pada Antrian terjadi dengan penambahan elemen Antrian
kebelakang, yaitu menggunakan nilai Tail.
3.
IsFull
Untuk mengecek apakah Antrian sudah penuh atau belum
Dengan cara mengecek nilai Tail, jika Tail >= MAX-1 (karena MAX-1 adalah
batas elemen array pada C) berarti sudah penuh
4.
enqueue--
Untuk menambahkan elemen ke dalam Antrian, penambahan elemen selalu
ditambahkan di elemen paling belakang
Penambahan elemen selalu menggerakan variabel Tail dengan cara increment
counter Tail terlebih dahulu
5.
dequeue ()
Digunakan untuk menghapus elemen terdepan/pertama (head) dari Antrian
Dengan cara menggeser semua elemen antrian kedepan dan mengurangi Tail dgn
1
Penggeseran dilakukan dengan menggunakan looping.
6.
Clear ()
Untuk menghapus elemen-elemen Antrian dengan cara membuat Tail dan Head =
-1
Penghapusan elemen-elemen Antrian sebenarnya tidak menghapus arraynya,
namun hanya mengeset indeks pengaksesan-nya ke nilai -1 sehingga elemen-elemen
Antrian tidak lagi terbaca
7.
Tampil()
Untuk menampilkan nilai-nilai elemen Antrian
Menggunakan looping dari head s/d tail
D. PENGERTIAN TREE
Kumpulan node yang saling terhubung satu sama lain dalam suatu
kesatuan yang membentuk layakya
struktur sebuah pohon. Struktur pohon adalah suatu cara merepresentasikan suatu struktur
hirarki (one-to-many) secara grafis yang mirip sebuah pohon, walaupun pohon tersebut hanya tampak sebagai
kumpulan node-node dari atas ke bawah. Suatu struktur data yang tidak
linier yang menggambarkan
hubungan yang hirarkis (one-to-many) dan tidak linier antara elemen-elemennya.
Deklarasi Pohon
Jika kita memperhatikan setiap simpul dalam pohon biner, kita bisa menyusun
struktur data yang tepat dari simpul-simpul tersebut. Kita dapat melihat
bahwa dalam setiap simpul selalu berisi dua buah pointer untuk menunjuk
ke cabang kiri dan cabang kanan, dan informasi yang akan disimpan
dalamsimpul tersebut. Dengan memperhatikan hal ini, simpul dalam pohon biner
disajikan sebagai berikut:
Sesuai dengan gambar 7.1, maka deklarasi
list yang sesuai adalah:
TypeInfo Arang typedef;
typedef struct Simpul * Pohon;
struct Simpul {
Info TypeInfo;
tree Kiri, /* cabang kiri */
Kanan; /* cabang kanan */
};
ISTILAH
DALAM TREE
1.
JENIS-JENIS TREE
POHON BINARY
Tree dengan syarat bahwa tiap node hanya boleh memiliki maksimal dua sub pohon dan kedua subpohon harus
terpisah.
Kelebihan Struktur Binary Tree:
·
Mudah dalam penyusunan algoritma sorting
·
Searching data relatif cepat
·
Fleksibel dalam penambahan dan penghapusan data
1. KUNJUNGAN PADA
POHON BINER
Sebuah pohon biner memiliki operasi
traversal yaitu suatu kunjungan pada
suatu simpul tepat satu kali. Dengan
melakukan kunjungan lengkap kita akan
memperoleh urutan informasi secara linier
yang tersinpan di dalam pohon biner.
Terdapat tiga jenis kunjungan pada pohon
biner, yaitu :
1. preorder
Kunjungan jenis ini mempunyai urutan
kunjungan sebagai berikut :
– Cetak isi simpul yang dikunjungi.
– Kunjungi cabang kiri.
– Kunjungi cabang kanan.
Prosedur untuk melakukan traversal secara
PREORDER adalah sebagai berikut:
- Memerintahkan
Kunjungan jenis ini mempunyai urutan kunjungan sebagai
berikut :
– Kunjungi cabang kiri.
– Cetak isi simpul yang dikunjungi.
– Kunjungi cabang kanan.
Prosedur untuk melakukan traversal secara
INORDER adalah sebagai berikut:
1. Mail Order
Kunjungan jenis ini mempunyai urutan
kunjungan sebagai berikut :
– Kunjungi cabang kiri.
– Kunjungi cabang kanan.
– Cetak isi simpul yang dikunjungi
BERIKUT MERUPAKN CONTOH PROGRAMNYA
#include <stdio.h> // file header
# include <conio.h>
/* Deklarasi struct */
typedef struct Node {
int data; // pohon Data PADA
Node * kiri; // penunjuk simpul Anak kiri
Node * Kanan; // pointer simpul Anak Kanan
};
/* Fungsi untuk memasukkan data ke dalam
tree */
kekosongan Tambahkan (Node ** root, int databaru) {
if((*root)
== NULL){ //jika pohon/subpohon masih
kosong
Node *baru;//node “baru” dibentuk…
baru = Node baru; // struct berdasarkan "Node"
baru->data = databaru; //data node baru diisi oleh variabel databaru
baru-> kiri = NULL; // indikator kiri node baru masih kosong
baru-> kanan = NULL; // indikator kanan node baru masih kosong
(* root) = baru; // node pohon (root) ditempatkan pada node baru
(* Akar) -> kiri = NULL; // Indikator kiri node root masih kosong
(* Root) -> kanan = NULL; // Indikator kanan node root masih kosong
printf(“Data bertambah!”);
}
lain jika (databaru <(* root) -> data) // jika databaru Kurang Dari Data simpul akar ...
tambah(&(*root)->kiri, databaru);//tambahkan databaru pada subpohon kiri
lain jika (databaru> (* root) -> data) // jika databaru Lebih Dari data yang akar ...
tambah(&(*root)->kanan, databaru); //tambahkan databaru pada subpohon
kanan
lain jika (databaru == (* root) -> data) // jika databaru sama DENGAN Data simpul akar
printf(“Data sudah ada!”);//databaru tidak dapat ditambahkan pada tree
}
/* Fungsi untuk menampilkan data secara
pre-order
(data ditampilkan dari node
induk, node anak kiri, lalu node anak kanan)
* /
kekosongan preorder (Node * root) {
if (root! = NULL) {// jika pohon / subpohon tidak kosong
printf(“%d “, root->data);//menampilkan data node yang dikunjungi
preOrder(root->kiri);//mengunjungi node anak kiri
preOrder(root->kanan); //mengunjungi node anak kanan
}
}
/* Fungsi untuk menampilkan data secara
in-order
(data ditampilkan dari node
anak kiri, node induk, lalu node anak kanan)
* /
membatalkan memerintahkan (Node * root) {
if (root! = NULL) {// jika pohon / subpohon tidak kosong ...
inOrder(root->kiri);//mengunjungi node anak kiri
printf(“%d
“, root->data);//menampilkan data node yang dikunjungi
inOrder(root->kanan);//mengunjungi node anak kanan
}
}
/* Fungsi untuk menampilkan data secara
post-order
(data ditampilkan dari node
anak kiri, node anak kanan, lalu node induk)
* /
membatalkan mail order (Node * root) {
if (root! = NULL) {// jika pohon / subpohon tidak kosong
postOrder(root->kiri); //mengunjungi node anak kiri
postOrder(root->kanan);//mengunjungi node anak kanan
printf(“%d “,
root->data); //menampilkan data node yang dikunjungi
}
}
utama(){
PDB int c;
Node *pohon, *t;
pohon = NULL;
melakukan{
int data;
printf ("MENU \ n");
printf ("1. Tambahkan \ n");
printf ("2 lihat Pre-Order \ n.");
printf (". 3 lihat dalam Orde \ n");
printf ("4 lihat Pasca Orde \ n.");
printf ("5 Exit \ n.");
printf ("PILIHAN:"); scanf ("% d", & pil);
switch (pil) {
Kasus 1:
printf(“Data baru : “);
scanf ("% d", & data);
tambah(&pohon, data);
istirahat;
Kasus 2:
if(pohon != NULL)
preOrder(pohon);
lain
printf(“Masih kosong!”);
istirahat;
Kasus 3:
if(pohon != NULL)
Inorder (Segera);
lain
printf(“Masih
kosong!”);
istirahat;
Kasus 4:
if(pohon != NULL)
mail order (pohon);
lain
printf(“Masih kosong!”);
istirahat;
}
getch ();
printf ("\ n");
}
sementara (pil = 5!);
}
HASIL
E. ARRAY
Sebelum nya saya akan sedikit membahas konsep dasar
dari array.Program yang kompleks memerlukan banyak variabel sebagai inputannya.
Kita bisa saja mendeklarasikan variable-variable tersebut satu persatu sesuai
dengan jumlah yang kita butuhkan.
Misalkan kita memiliki tiga data yang berbeda dan kita
simpan dalam variabel yang berbeda.
int number1;
int number2;
int number3;
number1 = 1;
number2 = 2;
number3 = 3;
dll ..............
Bagaimana jika terdapat banyak data yang berbeda yang
memiliki tujuan yang sama, dan bagaimana cara menyimpannya.Sebuah variabel
array adalah sejumlah variabel berbeda dengan nama yang sama tetapi memiliki
nomor indeks yang unik untuk membedakan setiap variabel tersebut. Gambaran
tentang konsep array seperti strukur data berikut ini:

Penjelasan:
-Indeks adalah sebuah angka yang menyatakan urutan
sebuah elemen pada suatu variabel array
- Nomor indeks variabel array selalu dimulai dari 0
(nol), sehingga nomor indeks bagi elemen terakhir sebesar (N-1), dimana N
adalah jumlah total elemen.
- Untuk mengakses dapat dilakkan setiap elemen dalam
variabel array dengan mengacu pada nomor indeksnya.
Terdapat 3 langkah untuk
membuat array:
*Mendeklarasikan variabel array
Contoh :
int [ ] angka;
“ Variabel angka kita deklarasikan sebagai variabel array
dimana setiap elemennya akan
menyimpan data bertipe int ”.
*Memcreate array beserta ukurannya.
Contoh :
angka = new int[5];
int [] Angka = int baru [5];
“Berarti kita memesan 5 elemen untuk variabel angka dan array
adalah sebuah object, maka
buat Operator DENGAN array baru. "
*Memberikan sebuah nilai pada setiap element array.
Contoh :
int[ ] angka = {5, 3, 23, 99, 2};
int Nilai = int baru [3];
Sepatu [0] = 75;
sepatu [1] = 80;
Sepatu [2] = 100;
Contoh Program Array 1
Dimensi
import java.io. *;
public class ContohArray1 {
public static void main (String [] args)
{
mencoba{
int [] Angka = int baru [5];
System.out.println ("Masukkan 5 Data");
System.out.println ("===============");
BufferedReader BufferedReader in = baru (InputStreamReader baru (System.in));
for (int i = 0; i <angka.length; i ++)
{
System.out.print ("Data Masukkan Ke -" + (i + 1) + ":");
Angka [i] = Integer.parseInt (in.readLine ());
}
System.out.println ("\ nData Ada Yang Di Array");
System.out.println ("===============");
for (int i = 0; i <angka.length; i ++)
{
System.out.println ("Data Ke -" + (i + 1) + ":" + Angka [i]);
}
}
catch (Exception e) {
System.out.println ("Kesalahan");
}
}
}
Penjelasan :
* Pada baris source int[ ] angka = new int[5] ,kita
mendeklarasikan array dengan nama angka yang mempunyai 5 elemen.
* Fungsi length, digunakan untuk mengetahui
banyaknya elemen dari suatu array.
* angka[i] = Integer.parseInt(in.readLine()), instruksi untuk memasukkan angka yang kita masukkan ke dalam elemen array.
* angka[i] = Integer.parseInt(in.readLine()), instruksi untuk memasukkan angka yang kita masukkan ke dalam elemen array.
Hasil

Array 2 Dimensi
Bentuk umum
pendeklarasian variabel array dua dimensi di Java adalah:
tipeData[ ][ ] nama_variabel[=new tipeData[jumlah_baris] [jumlah_kolom]];
tipeData[ ][ ] nama_variabel[=new tipeData[jumlah_baris] [jumlah_kolom]];

N adalah nilai yang menyatakan jumlah baris dari
array, sedangkan M menyatakan jumlah kolom dari array.
Contoh Program Array 2 Dimensi
Contoh Program Array 2 Dimensi
public class ArrayDuaDimensi {
static void main (String [] args publik
{Int TwoDarray [] [] = new int [0] [0];
int k = 0;
for (int i = 0; i <5; i ++)
{Untuk (int j = 0; j <4; j ++)
{System.out.print (+ i + "," +
j);}
System.out.print
("");}}}
j);}
System.out.print
("");}}}
Hasil

F.
SEARCHING
- Pengertian Searching
Pencarian (Searching) merupakan proses yang
fundamental dalam pemrograman, guna menemukan data (nilai) tertentu di dalam
sekumpulan data yang bertipe sama. Fungsi pencarian itu sendiri adalah untuk
memvalidasi (mencocokkan) data.
- Metode pencarian dibagi menjadi
2, yaitu:
1. Metode Pencarian Beruntun
Konsep yang digunakan dalam metode ini adalah membandingkan data-data yang ada dalam kumpulan tersebut, mulai dari elemen pertama sampai elemen ditemukan, atau sampai elemen terakhir.
Konsep yang digunakan dalam metode ini adalah membandingkan data-data yang ada dalam kumpulan tersebut, mulai dari elemen pertama sampai elemen ditemukan, atau sampai elemen terakhir.
2. Metode Pencarian Bagi Dua
(Binary Search)
Metode ini diterapkan pada sekumpulan data yang sudah terurut (menaik atau menurun). Metode ini lebih cepat dibandingkan metode pencarian beruntun. Data yang sudah terurut menjadi syarat mutlak untuk menggunakan metode ini.
Konsep dasar metode ini adalah membagi 2 jumlah elemennya, dan menentukan apakah data yang berada pada elemen paling tengah bernilai sama, lebih dari atau kurang dari nilai data yang akan dicari. Jika bernilai sama, maka langsung data yang dicari ditemukan. Jika data di elemen terurut naik, maka jika data yang berada di tengah kurang dari data yang dicari, maka pencarian selanjutnya berkisar di elemen tengah ke kanan, dan begitu seterusnya sampai ketemu atau tidak sama sekali. Dan sebaliknya untuk nilai data yang berada di tengah lebih dari data yang dicari, maka pencarian selanjutnya berkisar di elemen tengah ke kiri, dan begitu seterusnya sampai ketemu atau tidak sama sekali. Dan demikian sebaliknya untuk data yang terurut menurun. Dalam hal ini tentukan indeks paling awal dan indeks paling akhir, untuk membagi 2 elemen tersebut.
Indeks awal = i, dimana nilai i, pada awalnya bernilai 0;
Indeks akhir = j, dimana nilai j, pada awalnya bernilai sama dengan jumlah elemen.
Contoh implementasi searching
Metode ini diterapkan pada sekumpulan data yang sudah terurut (menaik atau menurun). Metode ini lebih cepat dibandingkan metode pencarian beruntun. Data yang sudah terurut menjadi syarat mutlak untuk menggunakan metode ini.
Konsep dasar metode ini adalah membagi 2 jumlah elemennya, dan menentukan apakah data yang berada pada elemen paling tengah bernilai sama, lebih dari atau kurang dari nilai data yang akan dicari. Jika bernilai sama, maka langsung data yang dicari ditemukan. Jika data di elemen terurut naik, maka jika data yang berada di tengah kurang dari data yang dicari, maka pencarian selanjutnya berkisar di elemen tengah ke kanan, dan begitu seterusnya sampai ketemu atau tidak sama sekali. Dan sebaliknya untuk nilai data yang berada di tengah lebih dari data yang dicari, maka pencarian selanjutnya berkisar di elemen tengah ke kiri, dan begitu seterusnya sampai ketemu atau tidak sama sekali. Dan demikian sebaliknya untuk data yang terurut menurun. Dalam hal ini tentukan indeks paling awal dan indeks paling akhir, untuk membagi 2 elemen tersebut.
Indeks awal = i, dimana nilai i, pada awalnya bernilai 0;
Indeks akhir = j, dimana nilai j, pada awalnya bernilai sama dengan jumlah elemen.
Contoh implementasi searching
#include
void main ()
void main ()
{Clrscr (); Ponsel int [5];
int jml_bil,nilai_max;
int i;
/* memasukan data */
cout<<"masukkan jumlah bilangan kurang dari 5 :
";cin>>jml_bil;
untuk review (i = 0; i
{cout << "Bilang KE << << i + 1": "; cin >> centang [i];
{cout << "Bilang KE << << i + 1": "; cin >> centang [i];
}
/* menentukan nilai max */
nilai_max = bil [0]; untuk review (i = 0; i {if (bil [i]> nilai_max)
{
nilai_max=bil[i];
}
}
/* mencetak nilai max */
cout << "Nilai max: << nilai_max <
cout<
getch();
}Algoritma dari
1.
Proses
yang terjadi pada pencarian dengan metode ini adalah sebagai berikut :
Membaca Array data
2.
Apabila
Array belum terurut maka array diurutkan terlebih dahulu.
3.
Menentukan
data yang akan dicari
4.
Menentukan
elemen tengah dari array
5.
Jika
nilai elemen tengah sama dengan data yang dicari, maka pencarian berhenti.
Jika elemen tengah tidak sama dengan data yang dicari maka :
1.
Jika
nilai elemen tengah > data yang dicari maka pencarian dilakukan pada
setengah array pertama.
2.
Jika
nilai elemen tengah lebih kecil dari pada data yang dicari maka pencarian
dilakukan pada setengah array berikutnya.
</ Nilai_max << / << i + 1 ":"; cin>
G.
SORTING
Sorting/pengurutan biasanya di lakukan untuk tujuan
mempermudah pencarian. Pengurutan data baik dari segi ascending (dari nilai
terkecil ke terbesar) atau descending (dari nilai terbesar ke terkecil). Ketika
akan melakukan sortir di komputer, maka hal-hal yang akan mempertimbangkan,
meliputi :
- Perlu tidaknya data disortir
- Besarnya atau banyaknya data yang akan di sortir
- Kemampuan atau kapasitas computer atau media
penyimpanan data
- Metode sortir
Teknik sortir sangat erat kaitannya dengan proses perbandingan dan
penukaran tempat antar elemen data. Waktu terbaik akan di peroleh ketika
susunan elemen datanya sudah sama dengan susunan yang di inginkan melalui
sortirnya. Waktu terburuk akan di dapatkan ketika susunan elemen-elemen datanya
terbalik dari susunan yang di kehendaki sortirnya. Waktu rata-rata di peroleh
dengan memperhitungkan berbagai susunan bentuk elemen-elemen datanya.
- Bubble Sort
Bubble Sort atau metode gelembung adalah metode pengurutan dengan cara
melakukan penukaran data dengan tempat di sebelahnya jika data sebelum lebih
besar dari pada data sesudahnya secara terus menerus sampai bisa di pastikan
dalam satu iterasi tertentu tidak ada lagi perubahan, atau telah terurut dengan
benar. Jika tidak ada perubahan berarti data sudah terurut. Disebut pengurutan
gelembung karena masing-masing kunci atau data akan dengan lambat menggelembung
atau membandingan data ke posisinya yang tepat.
Metode ini mudah di pahami dan di program, tetapi bila di bandingkan dengan
metode lain yang kita pelajari, metode ini merupakan metode yang paling tidak
efisien karena memiliki banyak pertukara sehingga memerlukan pengalokasian
memori yang besar untuk menjalankan metode ini.
Kelebihan Bubble sort:
Metode Bubble sort adalah metode yang paling simple
Metode Bubble sort mudah dimengerti algoritmanya
Contoh Program
Bubble Sort :
#include <iostream.h>
# include <conio.h>
kekosongan Selsort (int X [], int UKURAN)
{
int pos, kecil, suhu;
for (int i = 0; i <-UKURAN 1; i ++) {
kecil = X [i];
for (int j = i + 1; j <UKURAN; j ++)
{
jika (X [j] <kecil)
{kecil = X [j];
pos = j;}
}
temp = X [i];
X [i] = X [pos];
X [pos] = suhu;
}}
void main (void)
{Clrscr ();
int A [10];
int ukuran;
cout << "\ n Masukkan berbagai ukuran:";
cin >> ukuran;
cout << "\ n Masukkan elemen array yang yang:";
for (int i = 0; i <ukuran; i ++)
{
cin >> A [i];
}
Selsort (A, ukuran);
cout << "\ n The array diurutkan adalah seperti berikut:";
for (int l = 0; l <ukuran; l ++)
{cout << A [i];}
getch ();
}
Contoh Gambar Cara Kerja Bubble Sort :
- Seleksi Urutkan
Selection Sort
adalah metode yang digunakan dengan cara memilih data yang akan di urutkan
menjadi dua bagian, yang belum di urutkan, dan meja yang telah di urutkan.
Elemen pertama yang di ambil dari bagian array yang belum di urutkan dan
kemudian di letakan pada posisinya sesuai dengan bagian lain array yang telah
di urutkan. Tahapan ini di lakukan secara berulang-ulang hingga tidak ada lagi
elemen yang tersisa pada bagian array yang belum diurutkan.
Contoh Seleksi Program Urutan
# include <conio.h>
#include <stdio.h>
void
tampilkan_larik(int data[], int n)
{
int i;
Ulasan untuk review (i = 0; i <n; i ++)
cout << Tanggal [i] << "";
cout << endl << endl;
}
selection_sort kekosongan (data int [], int n)
{
int posmin, posawal, j, tmp;
untuk (posawal = 0; posawal <n-1; posawal ++)
{
posmin = posawal;
Ulasan untuk review (j = posawal + 1; j <n; j ++)
jika (data [posmin]> Data [j])
posmin = j;
//tukarkan
tmp = Data [posawal];
tanggal [posawal] = Data [posmin];
Data [posmin] = tmp;
"\ N Hasil Ketika Posawal =" cout << << << posawal;
tampilkan_larik(data,n);
}
}
int main ()
{
Data int [50], i, n;
cout << "\ n @ Simulasi Seleksi SORT @ \ n \ n \ n";
cout << "========================================= \ n";
cout << "masukkan tanggal Banyak";
cin >> n;
clrscr ();
Ulasan untuk review (int a = 0; a <n; a ++)
{
cout << "\ n Tanggal masukkan ke" << a << "";
cin >> tanggal [a];
}
selection_sort (data, n);
//hasil pengurutan
cout<<"\n\n hasil pengurutan : \n\n";
cout<<"
"; tampilkan_larik(data,n);
"\ N SORTING Selesai ..................." cout <<;
getch ();
clrscr ();
cout << "-----------------------"
cout << "by: hamba Allah, 2014";
cout << "-----------------------"
getch ();
return 0;
}
Contoh Gambar Cara Kerja Selection Sort :
- Penyisipan Urut
Insertion Sort adalah Metode Literasi (pengulangan) yang menginsert atau menyisipkan setiap elemen ketempat yang sesuai(setelah dibandingkan dengan elemen kiri dan kanannya) atau kita bisa mengumpamakan metode ini seperti bermain kartu, yaitu satu demi satu akan menginsert ketempat yang sesuai.
Contoh
Program Insertion Sort :
#include <iostream.h>
# include <conio.h>
#define ELEMENTS 6
kekosongan insertion_sort (int x [], int panjang) {
int kunci, i;
for (int j = 0; j <Panjang; j ++) {
key = x [j];
i = j-1;
sementara (x [i]> kunci && i> = 0) {
x [i + 1] = x [i];
saya--;
}
x [i + 1] = kunci;
}
}
int main () {
int A [UNSUR] = {9,2,7,5,4,3};
int x;
cout<<"array yang belum di sort:";
untuk review (x = 0; x <ELEMENTS; x ++) {
cout << A [x];
}
cout << endl;
insertion_sort (A, ELEMENTS);
cout<<"Array yang sudah di sort:";
untuk review (x = 0; x <ELEMENTS; x ++) {
cout << A [x];
}
getch ();
return 0;
}
Contoh Gambar Cara Kerja Insertion Sort :































