0% menganggap dokumen ini bermanfaat (0 suara)
228 tayangan13 halaman

Pengurutan Data

Dokumen tersebut membahas tentang algoritma pengurutan, khususnya algoritma bubble sort. Bubble sort adalah salah satu metode pengurutan yang paling sederhana dengan cara menukar posisi elemen yang lebih besar ke belakang secara berulang hingga terurut. Algoritma ini memiliki kelebihan mudah dipahami namun kurang efisien untuk data besar karena kompleksitas waktunya O(n2).

Diunggah oleh

IbrahimUcilMalik
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
228 tayangan13 halaman

Pengurutan Data

Dokumen tersebut membahas tentang algoritma pengurutan, khususnya algoritma bubble sort. Bubble sort adalah salah satu metode pengurutan yang paling sederhana dengan cara menukar posisi elemen yang lebih besar ke belakang secara berulang hingga terurut. Algoritma ini memiliki kelebihan mudah dipahami namun kurang efisien untuk data besar karena kompleksitas waktunya O(n2).

Diunggah oleh

IbrahimUcilMalik
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 13

BAB I

PENDAHULUAN
Pada saat kita membuat sebuah program sering kali kita menghadapi
permasalahan yang memerlukan pengrutan suatu nilai baik secara langsung atau pun
tidak. Misalnya kita melakukan mencari sebuah nilai pada suatu list, permasalahan akan
lebih mudah diselesaikan jika kita mengurutkan terlebih dahulu list tersebut dari kecil
ke besar, kita tinggal melakukan pencarian nilai tersebut selama nilai tersebut lebih kecil
atau sama dengan nilai yang ditelusuri pada list. Jika nilai dari dalam list sudah lebih
besar dari nilai yang kita cari berarti sudah pasti nilai yang dicari tersebut tidak ada. Ini
jauh lebih efektif dibandingkan mengecek semua nilai pada list tersebut dari awal
sampai akhir jika nilai itu tidak ada, ini sangat tidak efektif/ bayangkan jika kita harus
mencari satu nilai dalam data yang jumlahnya mencapai jutaan atau milyaran.
Sadar atau tidak manusia sering melakukan pengurutan dengan teknik-teknik
tertentu dalam kehidupan sehari-hari. Misalnya saat kita bermain kartu remi, kita akan
mengambil kartu tersebut dan mengurutkannya dengan cara-cara tertentu. Bila kita
mengambil kartu tersebut satu-per-satu dari tumpukannya dan setiap mengambil kita
langsung mengurutkannya dalam algoritma pengurutan, cara tersebut adalah
implementasi dari insertion sort. Namun bila kartu dibagikan semuanya terlebih dahulu
kemudian baru kita kelompokan menurut jenisnya. Kemudian barulah kita urutkan dari
paling kecil ke paling besar maka itulah yang disebut selection sort.

BAB II
PENGANTAR ALGORITMA
A. Sejarah Ilmu Algoritma
Ditinjau dari asal usul katanya kata Algoritma sendiri mempunyai sejarah yang
aneh. Orang hanya menemukan kataAlgorism yang berarti proses menghitung dengan
angka arab. Anda dikatakan Algorist jika anda menghitung menggunakan Angka Arab.
Para ahli bahasa berusaha menemukan asal kata ini namun hasilnya kurang memuaskan.
Akhirnya para ahli sejarah matematika menemukan asal kata tersebut yang berasal dari
nama penulis buku arab yang terkenal yaitu Abu Jafar Muhammad Ibnu Musa AlKhuwarizmi. Al-Khuwarizmi dibaca orang barat menjadi Algorism.Al-Khuwarizmi
menulis buku yang berjudul Kitab Al Jabar Wal-Muqabala yang artinya Buku
pemugaran dan pengurangan (The book of restoration and reduction). Dari judul buku
itu kita juga memperoleh akar kata Aljabar (Algebra). Perubahan kata
dariAlgorism menjadi Algorithm muncul

karena

kata Algorism sering

dikelirukan

dengan Arithmetic, sehingga akhiran sm berubah menjadi thm. Karena perhitungan


dengan

angka

Arab

sudah

menjadi

hal

yang

biasa.

Maka

lambat

laun

kata Algorithm berangsur-angsur dipakai sebagai metode perhitungan (komputasi)


secara umum, sehingga kehilangan makna kata aslinya. Dalam Bahasa Indonesia,
kata Algorithm diserap menjadi Algoritma.
B.

Definisi Algoritma

Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang


disusun secara sistematis dan logis. Kata Logismerupakan kata kunci dalam
Algoritma. Langkah-langkah dalam Algoritma harus logis dan harus dapat ditentukan
bernilai salah atau benar.
Algoritma adalah jantung ilmu komputer atau informatika. Banyak cabang ilmu
komputer yang diacu dalam terminologi algoritma. Namun, jangan beranggapan
algoritma selalu identik dengan ilmu komputer saja. Dalam kehidupan sehari-hari pun
banyak terdapat proses yang dinyatakan dalam suatu algoritma. Cara-cara membuat kue
atau masakan yang dinyatakan dalam suatu resep juga dapat disebut sebagai algoritma.
Pada setiap resep selalu ada urutan langkah-lankah membuat masakan. Bila langkahlangkahnya tidak logis, tidak dapat dihasilkan masakan yang diinginkan. Ibu-ibu yang
mencoba suatu resep masakan akan membaca satu per satu langkah-langkah
pembuatannya lalu ia mengerjakan proses sesuai yang ia baca.
Secara umum, pihak (benda) yang mengerjakan proses disebut pemroses
(processor). Pemroses tersebut dapat berupa manusia, komputer, robot atau alat-alat
elektronik lainnya. Pemroses melakukan suatu proses dengan melaksanakan atau
mengeksekusi algoritma yang menjabarkan proses tersebut. Melaksanakan Algoritma
berarti mengerjakan langkah-langkah di dalam Algoritma. Pemroses mengerjakan
proses sesuai dengan algoritma yang diberikan kepadanya. Juru masak membuat kue
berdasarkan resep yang diberikan kepadanya, pianis memainkan lagu berdasarkan papan
not balok. Karena itu suatu Algoritma harus dinyatakan dalam bentuk yang dapat
dimengerti oleh pemroses. Jadi suatu pemroses harus :
1. Mengerti setiap langkah dalam Algoritma
2. Mengerjakan operasi yang bersesuaian dengan langkah tersebut.
C. Mekanisme Pelaksanan Algoritma Oleh Pemroses
Komputer hanyalah salah satu pemroses. Agar dapat dilaksanakan oleh komputer,
algoritma harus ditulis dalam notasi bahasa pemrograman sehingga dinamakan program.
Jadi program adalah perwujudan atau implementasi teknis Algoritma yang ditulis dalam
bahasa pemrogaman tertentu sehingga dapat dilaksanakan oleh komputer.
D. Produk yang dihasilkan pemrogram :

1. Program dengan rancangan yang baik (metodologis, sistematis)


2. Dapat dieksekusi oleh mesin
3. Berfungsi dengan benar
4. Sanggup melayani segala kemungkinan masukan
5. Disertai dokumentasi

ALGORITMA PENGURUTAN
3.1. Bubble Sort
Bubble sort adalah salah satu metode pengurutan exchanging yang bersifat
langsung dan termasuk jenis pengurutan yang paling sederhana. Nama bubble
sort sendiri berasal dari sifat nilai elemen terbesar yang selalu naik ke atas (ke akhir dari
list) seperti gelembung udara (bubble). Ide dari bubble sort adalah sebagai berikut :
1. Pengecekan dimulai dari elemen paling awal.
2. Elemen ke-1 dan ke-2 dari list dibandingkan.
3. Jika elemen pertama lebih besar dari elemen kedua, dilakukan pertukaran.
4. Langkah 2 dan 3 dilakukan lagi terhadap elemen kedua dan ketiga, seterusnya sampai
elemen terakhir.
5. Bila sudah sampai di elemen terakhir dilakukan pengulangan lagi dari awal sampai tidak
ada terjadi lagi pertukaran elemen.
6. Bila tidak ada pertukaran elemen lagi, maka elemen list terurut.
Contoh untuk algoritma program urut bubble sort :
rogram urut_bubblesort_emerer;
uses wincrt;
type larikemerer=array[1..100] of integer;
var a : larikemerer;
n:integer;

procedure bacalarik(var a: larikemerer;n:integer);


var i :integer;
begin
for i:=1 to n do
begin
write('masukan nilai a[',i,']: ');readln(a[i]);
end;
end;
procedure cetaklarik(a :larikemerer;n:integer);
var i :integer;
begin
for i:=1 to n do
begin
writeln('nilai a[',i,']=',a[i]);
end;
end;
procedure bubblesort(var l :larikemerer; n:integer);
var i,k,temp :integer;
begin
for i := 1 to n-1 do
for k := n downto i +1 do
if l[k] < l[k-1] then
begin
temp := l[k];
l[k] := l[k-1] ;
l[k-1] := temp;

end;
end;
{*program utama*}
begin
write('masukan jumlah data :');readln(n);
writeln('baca data :');
bacalarik (a,n);
writeln;
writeln('cetak data : ');
cetaklarik(a,n);
writeln;
bubblesort(a,n);
writeln('cetak data : ');
cetaklarik(a,n);

Pada setiap pengulangan (loop) dilakukan pengecekan terhadap tiap elemen mulai
elemen pertama dan kedua, elemen kedua dan ketiga, dan seterusnya sampai elemen
sebelum terakhir. Bila masih terjadi pertukaran (tukar = true) dilakukan pengecekan lagi
sampai tidak terjadi pertukaran (tukar = false) yang berarti semua elemen dalam list
tersebut sudah terurut membesar. Contoh:
5 3 8 7 9 1 awal (belum terurut )
3 5 7 8 1 9 pengulangan ke-1
3 5 7 1 8 9 pengulangan ke-2
3 5 1 7 8 9 pengulangan ke-3
3 1 5 7 8 9 pengulangan ke-4
1 3 5 7 8 9 pengulangan ke-5 (terurut)
Salah satu kelebihan algoritma bubble sort, terjadi saat semua elemen sudah
terurut (kompleksitas = O(n) ) di mana hanya terjadi pengecekan pada setiap elemen,
sehingga penelusuran hanya dilakukan satu kali saja. Ini merupakan kasus terbaik yang
mungkin terjadi pada algoritma ini. Kelebihan lain dari algoritma ini adalah dapat

dieksekusi dan dijalankan dengan cukup cepat dan efisien untuk sebuah kasus yang
hanya mengurutkan list yang urutannya sudah hampir benar. Selain kasus terbaik
tersebut, kompleksitas untuk algoritma ini akan menjadi O(n). Karenanya algoritma ini
sangat tidak efisien untuk dipergunakan dalam dunia pemrograman yang sesungguhnya,
apalagi jika pengurutan dilakukan terhadap elemen yang berjumlah sangat besar.
Kelebihan lain bubble sort adalah kemudahan untuk dimengerti. Umumnya
algoritma ini sering digunakan untuk mengenalkan algoritma pengurutan dalam dunia
komputer karena kesederhanaan idenya. Namun Owen Astrachan, seorang peneliti,
mengutarakan sebaiknya algoritma bubble sort ini tidak diajarkan lagi di dunia
komputer. Posisi setiap elemen pada bubble sort akan sangat menentukan performa saat
eksekusi. Bila elemen yang terbesar disimpan di awal, maka tidak akan menimbulkan
persoalan sebab elemen tersebut secara cepat akan ditukar langsung ke elemen paling
terakhir.
Sebaliknya jika elemen terkecil disimpan di bagian paling akhir elemen, maka
akan mengakibatkan elemen tersebut akan bergerak sebanyak hanya satu pergeseran
setiap masuk ke loop. Ini berarti harus dilakukan pengecekan sebanyak n kali dalam
satu loop dan loop akan dijalankan sebanyak n kali juga. Kedua jenis ini biasa disebut
rabbit dan turtle. Untuk menghilangkan masalah rabbit dan turtle ini, algoritma ini
dikembangkan dengan menciptakan algoritma cocktail sort dan comb sort. Cocktail sort
cukup baik untuk mengatasi permasalahan ini namun untuk kasus terburuk
kompleksitasnya sama dengan bubble sort yaitu O(n). Comb sort cukup baik untuk
mempercepat turtle pada elemen list dan juga memiliki kompleksitas yang cukup baik,
yaitu n log n, namun comb sort pun memiliki kelemahan, yaitu tidak stabil pada saat
pengurutan.
Kelemahan yang lain adalah bubble sort berinteraksi dengan buruk pada computer
modern saat ini. Penulisanya menghabiskan tempat dua kali lebih banyak dari insertion
sort dan juga sering melakukan cache misses dan lebih banyak terjadi branch
missprediction. Penelitian yang dilakukan oleh Astrachan pada pengurutan string di java
juga membuktikan bahwa bubble sort lima kali lebih lambat dari insertion sort.
Karenanya pada implementasinya bubble sort jarang digunakan, meskipun banyak juga
algoritma lain yang dikembangkan dari bubble sort ini. Dari analisis tersebut, algoritma
ini sebaiknya tidak diimplementasikan termasuk tidak efisien penggunaannya, hanya

baik digunakan untuk mengurutkan list yang sudah hampir terurut. Selain itu
pengurutan jenis ini sangat tidak efisien dan memakan banyak waktu saat dieksekusi.
Namun karena algoritma ini termasuk sederhana membuatnya cukup mudah untuk
diajarkan sebagai dasar dari algoritma pengurutan.

3.2. Insertion Sort


Algoritma insertion sort adalah sebuah algoritma sederhana yang cukup efisien
untuk mengurutkan sebuah list yang hampir terurut. Algoritma ini juga biasa digunakan
sebagai bagian dari algoritma yang lebih canggih. Cara kerja algoritma ini adalah
dengan mengambil elemen list satu-per-satu dan memasukkannya di posisi yang benar
seperti namanya. Pada array, list yang baru dan elemen sisanya dapat berbagi tempat di
array, meskipun

cukup

rumit.

Untuk

menghemat

memori,

implementasinya

menggunakan pengurutan di tempat yang membandingkan elemen saat itu dengan


elemen sebelumnya yang sudah diurut, lalu menukarnya terus sampai posisinya tepat.
Hal ini terus dilakukan sampai tidak ada elemen tersisa di input. Salah satu
implementasinya pada kehidupan sehari-hari adalah saat kita mengurutkan kartu remi.
Kita ambil kartu satuper-satu lalu membandingkan dengan kartu sebelumnya untuk
mencari posisi yang tepat. Variasi pada umumnya dilakukan terhadap array pada
insertion sort adalah sebagai berikut :
1. Elemen awal di masukkan sembarang, lalu elemen berikutnya dimasukkan di bagian
paling akhir.
2. Elemen tersebut dibandingkan dengan elemen ke (x-1). Bila belum terurut posisi elemen
sebelumnya digeser sekali ke kanan terus sampai elemen yang sedang diproses
menemukan posisi yang tepat atau sampai elemen pertama.
3. Setiap pergeseran akan mengganti nilai elemen berikutnya, namun hal ini tidak menjadi
persoalan sebab elemen berikutnya sudah diproses lebih dahulu.
Contoh program urut insertsort :
program urut_bubblesort_emerer;
uses wincrt;
type larikemerer=array[1..100] of integer;
var a : larikemerer;
n:integer;

procedure bacalarik(var a: larikemerer;n:integer);


var i :integer;
begin
for i:=1 to n do
begin
write('masukan nilai a[',i,']: ');readln(a[i]);
end;
end;
procedure cetaklarik(a :larikemerer;n:integer);
var i :integer;
begin
for i:=1 to n do
begin
writeln('nilai a[',i,']=',a[i]);
end;
end;
procedure insertsort(var l :larikemerer; n:integer);
var i,j,y:integer;
ketemu :boolean;
begin
for i := 2 to n do
begin
y :=l[i];
j:= i-1;
ketemu :=false;
while(j>=1) and (not ketemu)do

begin
if y <l[j]then
begin
l[j+1]:=l[j];
j:=j-1;
end
else
ketemu :=true;
end;
l[j+1]:=y;
end;
end;
Pertukaran yang berulang terjadi di pengulangan while yang akan berhenti saat
elemen sebelumnya sudah lebih kecil. Pengulanganfor berguna untuk melakukan insert
elemen selanjutnya. Kasus terbaik pada algoritma ini adalah saat semua elemen sudah
terurut. Pengecekan tiap elemen hanya dilakukan 1 kali sehingga hanya terjadi n kali
pengulangan iterate (komplesitas = O(n)). Sedangkan kasus terburuk adalah saat list ada
dalam kondisi terbalik yang membutuhkan n buah pertukaran terhadap n buah elemen,
sehingga kompleksitasnya sama dengan O(n). Kompleksitas ini sama dengan
kompleksitas rata-ratanya. Ini berarti untuk menghitung jumlah elemen yang sangat
besar algoritma ini kurang efisien untuk digunakan. Namun untuk melakukan sorting
terhadap elemen yang sedikit, algoritma ini termasuk algoritma tercepat eksekusinya.
Hal ini disebabkan pengulangan di dalamnya sangat cepat.
Jika kita membandingkan dengan bubble sort, keduanya memiliki kompleksitas
yang sama untuk kasus terburuk, namun menurut Astrachan keduanya sangat berbeda
dalam jumlah pertukaran yang diperlukan. Karenanya sekarang ini cukup banyaktext
book yang merekomendasikan insertion sort dibanding bubble sort.
Insertion sort ini memiliki beberapa keuntungan:
1. Implementasi yang sederhana
2. Paling efisien untuk data berukuran kecil

3. Merupakan online algorithmic, yang berarti bisa langsung melakukan sort setiap ada data
baru
4. Proses di tempat (memerlukan O(1) memori tambahan)
5. Stabil.
Pada

tahun

2004

Bender,

Farach-Colton,

and

Mosteiro

menemukan

pengembangan baru dari algoritma ini, disebut library sort atau gapped insertion sort
yang menggunakan beberapa gap kosong di sepanjang array. Dengan algoritma ini,
pergeseran elemen dilakukan sampai gap tersebut dicapai. Algoritma ini cukup baik
dengan kompleksitas O(n log n).
3.3. Maks selection sort.
Maksimum selections sort adalah memilih data yang maksimum dari suatu kumpulan
data larik, lalu menempatkan data tersebut ke elemen paling akhir atau paling awal
sesuai pengurutan yang diinginkan. Data maksimum/minimum yang diperoleh,
diisolasi dan tidak diikutsertakan pada proses pencarian data maksimum berikutnya.
Contoh program urut maksselections :
procedure maksselectionsort(var l :larikemerer; n:integer);
var i,j,imaks,temp :integer;
begin
for i := n downto 2 do
begin
imaks := 1;
for j:=2 to i do
if l[j] > l[imaks]then
imaks :=j;
temp :=l[imaks];
l[imaks]:=l[imaks];
l[i]:=temp;
end;
end;
3.3. Min selections sort

Minimum selection sort adalah memilih data yang minimum dari suatu kumpulan data
larik , lalu menempatkan data tersebut ke elemen paling akhir atau paling awal sesuai
pengurutan yang diinginkan. Data minimum yang diperoleh, diisolasi dan tidak
diikutsertakan pada proses pencarian data minimum berikutnya.
Contoh pengurutan Minselection :
procedure minselectionsort(var l :larikemerer; n:integer);
var i,j,imin,temp :integer;
begin
for i := 1 to n-1 do
begin
imin := i;
for j:=i +1 to n do
if l[j] > l[imin]then
imin :=j;
temp :=l[imin];
l[imin]:=l[imin];
l[i]:=temp;
end;
end;

BAB IV
KESIMPULAN
Penggunaan algoritma pengurutan dalam ilmu komputer memang sangat
diperlukan sebab kita tidak bisa membuat algoritma dengan prinsip yang penting
jalan. Bila ingin mengurutkan data yang sedikit jumlahnya maka sebaiknya
menggunakan insertion sort. Namun bila ingin mengurutkan data yang sangat
banyak, merge sortdan quick sort akan menjadi pilihan yang baik. Bubble sort sendiri
hanya sebuah algoritma sederhana yang sebaiknya tidak diimplementasikan lagi. Masih
banyak algoritma pengurutan yang lain, dengan segala kelebihan dan kekurangannya.
Karena itu pemilihan kompleksitas waktu dan ruang sangat penting di sini. Makalah ini
tidak membahas semua algoritma pengurutan, karena untuk membahas satu algoritma

secara mendalam pun akan sangat rumit dan mungkin menghabiskan satu makalah ini.
Namun

melalui

tulisan

ini,

pembaca

diharapkan

mampu

menganalisa

penggunaansorting algorithmic yang baik.

DAFTAR PUSTAKA
[1] Wikipedia, the free encyclopedia. (2006). Sorting algorithmic.
http://en.wikipedia.org/wiki/Sorting_algorithm Tanggal akses : 2 Januari 2012 pukul
20.00.
[2] Munir, Rinaldi. (2008). Diktat Kuliah IF2093 Struktur Diskrit Edisi Keempat.
Departemen Teknik Informatika, Institut Teknologi Bandung.

Anda mungkin juga menyukai