PEMROGRAMAN
“ALGORITMA PENGURUTAN”
Dosen Pengampu:
Disusun Oleh:
KELOMPOK 2
FAKULTAS TEKNIK
Puji syukur kami panjatkan kehadirat Tuhan Yang Maha Esa atas limpahan rahmat
dan karunianya kami dapat menyelesaikan makalah yang berjudul ”ALGORITMA
PENGURUTAN ”.
Kami juga mengucapkan terimakasih yang sebesar-besarnya kepada Bapak Amirhud
Dalimunthe, S.T.,M.Kom. Selaku dosen mata kuliah Algoritma dan Dasar Pemrograman
yang sudah memberikan kepercayaan kepada kami untuk menyelesaikan tugas ini.
Kami sangat berharap makalah ini dapat bermanfaat dalam menambah pengetahuan
mengenai “ALGORITMA PENGURUTAN”.
Kami pun menyadari bahwa di dalam makalah ini masih terdapat banyak kekurangan
dan jauh dari kata sempurna. Oleh sebab itu, kami mengharapkan adanya kritik dan saran
demi perbaikan makalah yang akan kami buat di masa yang akan datang, mengingat tidak ada
sesuatu yang sempurna tanpa saran yang membangun.
Mudah-mudahan makalah sederhana ini dapat dipahami oleh semua orang khususnya
bagi para pembaca. Kami mohon maaf yang sebesar-besarnya jika terdapat kata-kata yang
kurang berkenan.
A. LATAR BELAKANG
Persoalan pengurutan merupakan persoalan yag sanagat menarik perhatian para ilmuan
sains komputer, karena untuk persoalan yang sama terdapat puluhan algoritma pengurutan
yang sudah ditemukan orang. Pada dasarnya riset tentang algoritma bertujuan untuk
memperoleh algoritma pengurutan yang lebih mangkus. Pegurutan menjadi penting saat ini
karena volume data yang perlu diurutkan semakin lama semakin besar (big data).
Data yang sudah terurut memiliki beberapa keuntungan. Selain mempercepat waktu
pencarian, dari data yang terurut kita dapa langsung memperoleh nilai maksimum dan nilai
minimum. Untuk data numerik yang terurut menurun, nilai max adalah elemen pertama lari,
dan nilai minimum adalah elemen terakhir larik.
B. RUMUSAN MASALAH
1. Apa itu Pengurutan pada algoritma?
2. Apa saja yang terdapat pada pengurutan algoritma?
C. TUJUAN PENULISAN
1. Mampu menjelaskan defenisi algoritma pengurutan
2. Mampu memahami pelajaran algoritma pengurutan
3. Dapat memperaktikan algoritma pengurutan.
BAB II
PEMBAHASAN
A. MASALAH PENGURUTAN
Diberikan sebuah larik L dengan n elemen. Urutan larik tersebut sehingga tersusun secara
menaik sedemikian sehingga L[1] ≤ L[2] ≤ L[3≤...≤L[n]. Data yang akan diurutkan dapat
berupa data bertipe dasar atau bertipe terstruktur (record). Jika data bertipe terstruktur, maka
harus dispesifikasikan berdsarkan field apa data tersebut diurutkan. Field yang dijadikan
dasar pengurutan dikenal sebagai field terkunci.
i. 23,27,45,67,100,130,501
ii. 50,27,31.09,20.32,19.00,-5.20,-10.19
iii. ‘d’,’e’,’g’,’i’,’x’
iv. ‘amir’,’badu’,’budi’,’dudi’,’eno’,’rudi’,’zamzami’
Suatu pengurutan dikatakan stabil jika dua atau lebih data yang sama (atau identik)
tetap pada urutan yang sama setelah pengurutan. Misalya di dalam sekelompok data integer
berikut terdapat 3 buah nilai 12 (diberi tanda petik’,”, dan”’ untuk mengidentifikasi
urutannya.
70,12’,45,10,12”,33,50
Jika suatu metode pengurutan menghasilkan susunan data terurut seperti berikut:
10,12’,12”,12”’,33,45,50,60,70
Maka pengrutannya dikatakan stabil dan metode pengurutannya disebut metode stabil.
Tetapi jika suatu metode pngurutan menghasilkan susunan data terurut seperti contoh berikut:
10,12’,12”,12”’,33,45,50,60,70
kestabilan pengurutan mungkin penting atau tidak penting [PAR95]. Jika kita
menggunakan metode pengurutan yang stabil, maka kita tidak memperoleh hasilpengurutan
yang kita inginkan begitu juga sebaliknya.
B. ALGORITMA PENGURUTAN
1. Algortima pengurutan internal, yaitu algoritma pengurutan untuk data yang disimpan
di dalam memori komputer. Umumnya struktur internal yang dipakai untuk
pengurutan internal adalah larik, sehingga pengurutann internal disebut juga
pengurutan larik.
2. Algoritma pengurutan eksternal, yaitu algoritma pengurutan untuk data yang disimpan
di dalam dsik storage, disebut juga pengurutan arsip (file), karena struktur eksternal
yang dipakai adalah arsip.
C. ALGORITMA PENGURUTAN APUNG
Algorima pengurutan apung (buble sort) diinspirasi oleh gelembung sabun (bubble) yang
berada diatas permukaan air. Karena berat jenis gelembung sabun lebih ringan daripada berat
jenis air, maka gelembung sabun selalu terapung ke atas permukaan. Secara umum, benda-
benda yang berat akan terbenam dan benda-benda yang ringan akan terapung ke atas
permukaan. Prinsip pengapungan juga digunakan pada pengurutan apung. Apabila kita
menginginkan larik terurut menaik, maka elem larik yang berharga paling kecil
“diapungkan”, artinya diangkat ke “atas” melalui proses pertukaran. Jika lrik memiliki n
elemen, maka proses pengapungan ini dilakukan sebanyak n – 1 langkah (satu langkah disebt
juga satu kali pass) dengan n adalah ukuran larik. Pada akhir setiap pass ke-i larik [1...n] akan
terdiri atas dua bagian yaitu bagian yang sudah terurut, yaitu L[1..i], dan bagian yang belum
terurut, L[i+1..n] setelah pass terakhir, diperoleh larik L[1..n] yang terurut menaik.
Pass 1 : untuk setiap k =n, n-1,...,2, bandingkan L[k] dengan L[k-1]. Jika L[k] < L[k-1],
pertukaran L[k] dengan L[k-1].
Pass 2 : untuk setiap k = n,n-1,...,3, bandingkan L[k] dengan L[k-1]. Jika L[k]<L[k-1],
pertukaran L[k] dengan L[k-1].
(pada akhir pass 2, elemen L[2] berisi harga minimum kedua, larik L[1..2] terurut,
sedangkan L[3..n] belum terurut).
Pass n-1 : untuk setiap k = n bandingkan L[k] dengan L[K-1]. Jika L[k] < L[k-1],
pertukaran L[k] dengan L[k-1].
Pada akhir pass n-1, elemen L[n-1] berisi nilai minimum ke-(n-1) dan larik L[1..n-1]
terurut menaik. Elemen yang tersisa adalah L[n], tidak perlu diurut karena hanya satu-
satunya.
Untuk memperoleh larik yang terurut menurun, kita melakukan proses sebaliknya,
yaitu melemparkan elemen yang bernilai maksimum ke atas (atau ke ujung “kiri” larik).
Algoritma pengurutan ini disebut pengurutan seleksi (selection sort) karena gagasan
dsarnya adalah memilih elemen max/min dari larik, lalu menempatkan elemen max/min it
pada awal atau akhir larik (elemen terujung). Selanjutnya elemen terujung tersebut “diisolasi”
dan tidak disertakan pada proses selanjutnya. Proses yang sama diulang untuk elemen-elemen
larik yang tersisa, yaitu memilih elemen max/min berikutnya dan mempertukarkannya
dengan elemen terujung larik tersisa. Algortima pengurutan seleksi mirip dengan pengurutan
kartu, kecuali tidak terdapat proses pertukaran kartu. Kartu dengan nomor terkecil di cari, lalu
ditempatkan pada posisi paling atas. Selanjutnya kartu dengan nomor terkecil kedua dicari,
lalu ditempatkan pada posisi kedua, demikian seterusnya sampai seluruh kartu sudah terurut
membesar berdasarkan nomor.
Ada dua variasi algoritma pengurutan seleksi ditinjau dari pemilihan elemen max/min, yaitu:
1. Cari elemen terkecil (min) mulai dari elemen ke-i sampai elemen ke-n;
2. Pertukarkan min dengan elemen ke-i
Pass n-1: cari elemen minimum di dalam L[n-1..n] pertukarkan elemen terkecil
dengan elemen L[N-1]
(elemen yang tersisa adalah L[n], tidak perlu diurut karena ha ya satu-satunya)
Misalkan kita ingin mengurutkan larik dalam susunan menaik. Secar garis besar,
pengurutan seleksi-maksimum adalah sebagai berikut:
1. Cari elemen terbesar (maks) mulai dari elemen ke-1 sampai elemen ke-i;
2. Pertukarkan maks dengan elemen ke-i
Rincian setiap pass adalah sebagai berikut:
(setelah pass 2, elemen yang tersisa adalah L[1], tidk perlu diurutkan lagi
karena hanya satu-satunya.
Dari namanya, pengurutan sisip (insertion sort) adalah algoritma pengurutan dengan
car menyisipkan elemen larik pada posisi yang tepat. Pencarian posisi yang tepat
dilakukan dengan menyisir larik selama penyisiran dilakukan pergeseran elemen larik.
Algoritma pengurutan sisip cocok untuk persoalan menyisipkan elmen baru ke dalam
sekumpulan elemen yang sudah terurut.
Untuk mendaptkan larik yang terurut menaik, algoritma pengurutan sisip secara garis
besar ditulis sebagi berikut:
1. Y ←L[i]
2. Sisipkan y pada tempat yang sesuai di antara L[1]...L[i]
Pass 2: elemen y = L[2] harus dicari tempatnya yang tepat di dalam L[1..2] dengan
cara menggeser elemen-elemen L[1...1] ke kanan (atau kebawah jika larik
dibayangkan verikal) jika L[1..1] lebih besar daripassa L[2]. Misalkan posisi yang
tepat adalah k. Sisipkan L[2] pada L[K].
Pass 3: elemen y = L[3] harus dicari tempatnya yang tepat di dalam L[1..3] dengan
cara menggeser elemen-elemen L[1...2] ke kanan jika L[1..2] lebih besar daripada
L[3]. Misalkan posisi yang tepat adalah k. Sisipkan L[3] pada L[K].
Pass n: elemen y = L[n] harus dicari tempatnya yang tepat di dalam L[1..n] dengan
cara menggeser elemen-elemen L[1..n-1] ke kanan jika L[1..n-1] lebih besar daripassa
L[n]. Misalkan posisi yang tepat adalah k. Sisipkan L[n] pada L[K].
Hasildari pass n: larik L[1..n] sudah terurut menaik, yaitu L[1] ≤ L[2] ≤...≤L[n].
Algoritma pengurutan sisip untuk memperoleh elemen larik yang terurut menurun.
Algotima pengurutan yang dibahas sebelum ini menggunakan larik dengan elemen-
elemen bertipe sederhana. Pada sebagian besar kasus, elemen larik sering bertipe
terstruktur. Sebagi contoh, misalkan TabMhs adalah sebuah larik yang disetiap
elemennya menyatakan data nilai ujian seorang mahasiwa untuk satu mata kuliah (MK)
yang ia ambil. Data setiap mahasiswa adalah NIM, nama mahasiswa, mata kuliah yang ia
ambil, dan nilai mata kuliah tersebut.
Selama proses entry data mahasiswa, data dimasukkan secara acak (tidak terurut
berdasarkan NIM). Kita dapat mengurutkan sekumpulan data mahasiwa tersebut dengan
algoritma pengurutan.