Sosialisasi PPDB SulSel tahun 2024 di Sulawesi Selatan
Tugas Sorting Algoritma - Yoki satria
1. Metode Sorting dan Aplikasinya
Tugas Kuliah Algoritma dan Struktur Data
Yoki Satria
Manajemen Informatika
Politeknik Negeri Lampung
Bandar Lampung, Lampung
yoki.satria1996@gmail.com
Algoritma sorting
Dalam Ilmu Komputer, Algoritma Sorting merupakan
algoritma yang menempatkan elemen list pada urutan tertentu.
Urutan yang paling sering digunakan ialah urutan numerikal
dan urutan lexicographical. Sorting yang efisien sangat
dibutuhkan untuk mengoptimisasi penggunaan dari algoritma
lain seperti pencarian dan penggabungan yang membutuhkan
list terurut untuk berjalan dengan sempurna, yang juga sering
digunakan untuk Canonicalisisasi data dan menghasilkan
output yang dapat dibaca manusia. Untuk lebih lanjutnya,
output harus melengkapi dua syarat ini:
1. Output merupakan urutan yang tidak menurut
(nondecreasing) (setiap elemen tidak lebih kecil dari
elemen sebelumnya menurut dari urutan keseluruhan
yang diinginkan.
2. Output merupakan permutasi (pengurutan kembali)
dari inputan yang diberikan.
Sejak permulaan komputasi, masalah pengurutan ini telah
menarik penelitian yang serius, mungkin dikarenakan
kerumitan dari penyelesaian secara efisien disamping mudah,
dan dengan statemen yang kita mengerti. Sebagai contoh,
bubble sort pertama sekali ditemukan pada tahun
1956.[1]
Walaupun banyak yang memperkirakan
masalahnya telah terselesaikan, banyak algoritma
sorting baru yang masih ditemukan samap sekarang
(sebagai contoh, Library Sort yang baru
dipublikasikan pertama sekali pada tahun 2006).
Algoritma sorting sangat umum pada setiap kelas
pengenalan bidang Ilmu Komputer, dimana banyaknya
algoritma untuk masalah ini menyediakan pengenalan awal
mengenai banyaknya konsep algoritma inti, seperti Notasi Big
O, Algoritma Pembagi, Struktur Data, Algoritma Acak,
Analisa Best, Worst, Average Case, Running Time
Calculation, dan Batas Atas dan Bawah.
I. Pengertian sorting dan jenis-jenis
sorting
II. Sorting adalah sebuah proses merangkai benda dalam
urutan tertentu dan/atau dalam himpunan yang berbeda, dan
oleh karena itu dia memiliki dua arti umum yang berbeda.
1.Pengurutan : merangkai benda yang sejenis, sekelas, dll,
dalam urutan yang teratur.
2.Kategorisasi : pengelompokan dan pemberian label kepada
benda dengan sifat yang serupa.
Mensortir informasi atau data
Salah satu cara sorting yang penting adalah mengatur benda
informasi dalam urutan alfabetik sesuai dengan hubungan
penyusunan yang telah didefinisikan sebelumnya, misal ketika
seseorang mensortir buku-buku di perpustakaan berdasarkan
judul, subyek atau penulis (Biasanya diurutkan dalam urutan
membesar).
Urutan yang dihasilkan dapat membesar atau mengecil, karena
biasanya seluruh sorting adalah sorting angka.
Sorting dalam ilmu komputer adalah salah satu subjek riset
yang paling luas karena kebutuhan mempercepat operasi
dalam ribuan atau jutaan data selama operasi pencarian.
Tujuan utama mensortir informasi adalah untuk
mengoptimalkan tugas tertentu. Pada umumnya, ada dua cara
pengelompokan informasi: berdasarkan kategori, misal
sebuah katalog belanja di mana barang disusun
bersama di bawah judul seperti ‘rumah’, ‘olah
raga’, ‘pakaian wanita’, dll. dan berdasarkan
intensitas seperti harga, misal dari yang termurah
sampai yang termahal.
Jenis-jenis algoritma penjadwalan adalah sebagai
berikut :
1. Nonpreemptive, menggunakan konsep :
a. FIFO (First In First Out) atau FCFS (First Come First
Serve)
b. SJF (Shortest Job First)
c. HRN (Highest Ratio Next)
d. MFQ (Multiple Feedback Queues)
2. 2. Preemptive, menggunakan konsep :
a. RR (Round Robin)
b. SRF (Shortest Remaining First)
c. PS (Priority Schedulling)
d. GS (Guaranteed Schedulling)
Klasifikasi lain selain berdasarkan dapat/tidaknya suatu proses
diambil secara paksa adalah klasifikasi berdasarkan adanya
prioritas di proses-proses, yaitu :
1. Algoritma penjadwalan tanpa berprioritas.
2. Algoritma penjadwalan berprioritas, terdiri dari :
a. Berprioritas static
b. Berprioritas dinamis
Algoritma Nonpreemptive
1. First In first Out (FIFO)
First In First Out (FIFO) merupakan penjadwalan tidak
berprioritas. FIFO adalah penjadwalan paling sederhana, yaitu
proses-proses diberi jatah waktu pemroses berdasarkan waktu
kedatangan. Pada saat proses mendapat jatah waktu pemroses,
proses dijalankan sampai selesai.
Penilaian penjadwalan ini berdasarkan kriteria optimasi :
Adil, dalam arti resmi (proses yang datang duluan akan
dilayani lebih dulu), tapi dinyatakan tidak adil karena job-job
yang perlu waktu lama membuat job-job pendek menunggu.
Job-job yang tidak penting dapat membuat job-job penting
menunggu lama.
Efisiensi, sangat efisien.
Waktu tanggap sangat jelek, tidak cocok untuk sistem
interaktif apalagi untuk sistem waktu nyata.
Turn around time kurang baik.
Throughtput kurang baik. FIFO jarang digunakan secara
mandiri, tetapi dikombinasikan dengan skema lain.
Baik untuk sistem batch yang sangat jarang berinteraksi
dengan pemakai.
Contoh : aplikasi analisis numerik, maupun pembuatan tabel.
Sangat tidak baik (tidak berguna) untuk sistem interaktif,
karena tidak memberi waktu tanggap yang baik.
Tidak dapat digunakan untuk sistem waktu nyata (real-time
applications).
2. Shortest Job First (SJF)
Penjadwalan ini mengasumsikan waktu berjalannya proses
sampai selesai telah diketahui sebelumnya. Mekanismenya
adalah menjadwalkan proses dengan waktu jalan terpendek
lebih dulu sampai selesai, sehingga memberikan efisiensi yang
tinggi dan turn around time rendah dan penjadwalannya tak
berprioritas.
Contoh :
Terdapat empat proses (job) yaitu A,B,C,D dengan waktu
jalannya masing-masing adalah 8,4,4 dan 4 menit. Apabila
proses-proses tersebut dijalankan, maka turn around time
untuk A adalah 8 menit, untuk B adalah 12, untuk C adalah 16
dan untuk D adalah 20. Apabila keempat proses tersebut
menggunakan penjadwalan shortest job fisrt, maka turn
around time untuk B adalah 4, untuk C adalah 8, untuk D
adalah 12 dan untuk A adalah 20.
Karena SJF selalu memperhatikan rata-rata waktu respon
terkecil, maka sangat baik untuk proses interaktif. Umumnya
proses interaktif memiliki pola, yaitu menunggu perintah,
menjalankan perintah, menunggu perintah dan menjalankan
perintah, begitu seterusnya. Masalah yang muncul adalah
tidak mengetahui ukuran job saat job masuk. Untuk
mengetahui ukuran job adalah dengan membuat estimasi
berdasarkan kelakukan sebelumnya. Prosesnya tidak datang
bersamaan, sehingga penetapannya harus dinamis.
Penjadwalan ini jarang digunakan karena merupakan kajian
teoritis untuk pembandingan turn around time.
3. Highest Ratio Next (HRN)
Highest Ratio Next merupakan strategi penjadwalan dengan
prioritas proses tidak hanya berdasarkan fungsi waktu layanan
tetapi juga jumlah waktu tunggu proses. Begitu proses
mendapat jatah pemroses, proses berjalan sampai selesai.
Prioritas dinamis HRN dihitung berdasarkan rumus : Prioritas
= (waktu tunggu + waktu layanan)/ waktu layanan Karena
waktu layanan muncul sebagai pembagi, maka job lebih
pendek berprioritas lebih baik, karena waktu tunggu sebagai
pembilang maka proses yang telah menunggu lebih lama juga
mempunyai kesempatan lebih bagus. Disebut HRN, karena
waktu tunggu ditambah waktu layanan adalah waktu tanggap,
yang berarti waktu tanggap tertinggi yang harus dilayani.
. Multiple Feedback Queues (MFQ)
Merupakan penjadwalan berprioritas dinamis. Penjadwalan ini
untuk mencegah (mengurangi) banyaknya swappingdengan
proses-proses yang sangat banyak menggunakan pemroses
(karena menyelesaikan tugasnya memakan waktu lama) diberi
jatah waktu (jumlah kwanta) lebih banyak dalam satu waktu.
Penjadwalan ini juga menghendaki kelas-kelas prioritas bagi
proses-proses yang ada. Kelas tertinggi berjalan selama satu
kwanta, kelas berikutnya berjalan selama dua kwanta, kelas
berikutnya berjalan empat kwanta, dan seterusnya. Ketentuan
yang berlaku adalah sebagai berikut :
Jalankan proses pada kelas tertinggi.
ika proses menggunakan seluruh kwanta yang dialokasikan,
maka diturunkan kelas prioritasnya.
Proses yang masuk untuk pertama kali ke sistem langsung
diberi kelas tertinggi.
Mekanisme ini mencegah proses yang perlu berjalan lama
swapping berkali-kali dan mencegah proses-proses interaktif
yang singkat harus menunggu lama.
Using the Template
After the text edit has been completed, the paper is ready
for the template. Duplicate the template file by using the Save
As command, and use the naming convention prescribed by
your conference for the name of your paper. In this newly
created file, highlight all of the contents and import your
prepared text file. You are now ready to style your paper; use
the scroll down window on the left of the MS Word
Formatting toolbar.
A. Authors and Affiliations
Kelemahan :
Implementasi mekanisme prioritas dinamis lebih kompleks dan
3. mempunyai overhead lebih besar. Overhead ini diimbangi
dengan peningkatan daya tanggap sistem.
Contoh penjadwalan berprioritas :
Proses-proses yang sangat banyak operasi masukan/keluaran
menghabiskan kebanyakan waktu menunggu selesainya
operasinya masukan/keluaran. Proses-proses ini diberi prioritas
sangat tinggi sehingga begitu proses Memerlukan pemroses
segera diberikan, proses akan segera memulai permintaan
masukan/keluaran berikutnya sehingga menyebabkan proses
blocked menunggu selesainya operasi masukan/keluaran.
Dengan demikian pemroses dapat dipergunakan proses-proses
lain. Proses-proses I/O berjalan paralel bersama proses-proses
lain yang benar-benar memerlukan pemroses, sementara
proses-proses I/O itu menunggu selesainya operasi DMA.
Proses-proses yang sangat banyak operasi I/O-nya, kalau harus
JENIS-JENIS SORTING, CONTOH DAN APLIKASINYA
1) BUBBLE SORT
Bubble sort adalah salah satu metode sorting atau
mengurutkan dari data terkecil ke data terbesar ataupun
dengan cara membandingkan elemen kesatu dengan elemen
yang selanjutnya.
Contoh Penggunaannya :
I. 10 66 5 7 9 8
10 5 66 7 9 8
5 10 66 7 9 8
II. 5 10 66 7 9 8
5 10 7 66 9 8
5 7 10 66 9 8
III. menunggu lama untuk memakai pemroses (karena
prioritas rendah) hanya akan membebani memori,
karena harus disimpan tanpa perlu proses-proses itu
dimemori karena tidak selesai-selesai menunggu
operasi masukan dan menunggu jatah pemroses.
5 7 10 66 9 8
5 7 10 66 8 9
5 7 10 8 66 9
5 7 8 10 66 9
IV. 5 7 8 10 66 9
5 7 8 10 9 66
5 7 8 9 10 66
Hasilnya : 5 7 8 9 10 66
Aplikasinya :
Prosedur Bubble Sort
void bubble_sort(){
for(int i=1;i<n;i++){
for(int j=n-1;j>=i;j--){
if(data[j]<data[j-1]) tukar(&data[j],&data[j-1]);
//ascending
}
}
}
2) SELECTION SORT
Jika anda diminta untuk membuat algoritma sorting tersendiri,
anda mungkin akan menemukan sebuah algoritma yang mirip
dengan selection sort. Layaknya insertion sort, algoritma ini
sangat rapat dan mudah untuk diimplementasikan. Mari kita
kembali menelusuri bagaimana algoritma ini berfungsi
terhadap satu paket kartu. Asumsikan bahwa kartu tersebut
akan diurutkan secara ascending. Pada awalnya, kartu tersebut
akan disusun secara linier pada sebuah meja dari kiri ke
kanan, dan dari atas ke bawah. Pilih nilai kartu yang paling
Contoh penggunaannya :
Posisi 0 1 2 3 4 5
I. 10 66 5 7 9 8
Pembanding Posisi
10 < 66 0
10 > 5 (Tukar Idx) 2
5 < 7 2
5 < 9 2
5< 8 2
Posisi 0 1 2 3 4 5
4. II. 5 66 10 7 9 8
Pembanding Posisi
66 > 10 (Tukar Idx) 2
10 > 7 (Tukar Idx) 3
7 < 9 3
7 < 8 3
Posisi 0 1 2 3 4 5
III. 5 7 10 66 9 8
Pembanding Posisi
10 < 66 2
10 > 9 (Tukar Idx) 4
7 > 9 (Tukar Idx) 5
Posisi 0 1 2 3 4 5
IV. 5 7 8 66 9 10
Pembanding Posisi
66 > 9 (Tukar Idx) 4
9 < 10 4
Posisi 0 1 2 3 4 5
V. 5 7 8 66 9 10
Pembanding Posisi
66 > 10 (Tukar Idx) 5
Hasilnya : 5 7 8 9 10 66
Aplikasinya :
Prosedur Selection Sort
void selection_sort(){
for(int i=0;i<n-1;i++){
pos = i;
for(int j=i+1;j<n;j++){
if(data[j] < data[pos]) pos = j; //ascending
}
if(pos != i) tukar(&data[pos],&data[i]);
}
}
1) INSERTION SORT
Salah satu algoritma sorting yang paling sederhana adalah
insertion sort. Ide dari algoritma ini dapat dianalogikan seperti
mengurutkan kartu. Penjelasan berikut ini menerangkan
bagaimana algoritma insertion sort bekerja dalam pengurutan
kartu. Anggaplah 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,
dimana kartu yang diurutkan akan diletakkan. Ambil kartu
pertama 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 sesuai setelah
perbandingan. Proses tersebut akan berlangsung hingga seluruh
kartu pada meja pertama telah diletakkan berurutan pada meja
kedua. Algoritma insertion sort pada dasarnya memilah data
yang akan diurutkan menjadi dua bagian, yang belum
diurutkan (meja pertama) dan yang sudah diurutkan (meja
kedua). Elemen pertama diambil dari bagian array yang belum
diurutkan dan kemudian diletakkan sesuai posisinya
Contoh penggunaannya :
I.
Posisi 0 1 2 3 4 5
10 66 5 7 9 8
Temp Cek Geser
66 Temp > 10? -
II.
Posisi 0 1 2 3 4 5
10 66 5 7 9 8
Temp Cek Geser
5 Temp < 41 Geser data ke-1 ke posisi 2
5 Temp < 10 Geser data ke-0 ke posisi 1
III.
Posisi 0 1 2 3 4 5
5 10 66 7 9 8
Temp Cek Geser
7 Temp < 41 Geser data ke-2 ke posisi 3
7 Temp < 10 Geser data ke-1 ke posisi 2
7 Temp > 5 -
IV.
Posisi 0 1 2 3 4 5
5 7 10 66 9 8
Temp Cek Geser
9 Temp < 41 Geser data ke-3 ke posisi 4
9 Temp < 10 Geser data ke-2 ke posisi 3
9 Temp > 7 -
9 Temp > 5 -
5. V.
Posisi 0 1 2 3 4 5
5 7 9 10 66 8
Temp Cek Geser
8 Temp < 41 Geser data ke-4 ke posisi 5
8 Temp < 10 Geser data ke-3 ke posisi 4
8 Temp < 9 Geser data ke-2 ke posisi 3
8 Temp > 7 -
8 Temp > 5 -
1) MERGE SORT
Sebelum mendalami algoritma merge sort, mari kita
mengetahui garis besar dari konsep divide and conquer karena
merge sort mengadaptasi pola tersebut. Beberapa algoritma
mengimplementasikan konsep rekursi untuk menyelesaikan
permasalahan. Permasalahan utama kemudian dipecah
menjadi sub-masalah, kemudian solusi dari sub-masalah akan
membimbing menuju solusi permasalahan utama.
Pada setiap tingkatan rekursi, pola tersebut terdiri atas 3
langkah.
1. Divide
Memilah masalah menjadi sub masalah
2. Conquer
Selesaikan sub masalah tersebut secara rekursif. Jika sub-
masalah tersebut cukup ringkas dan sederhana, pendekatan
penyelesaian secara langsung akan lebih efektif
3. Kombinasi
Mengkombinasikan solusi dari sub-masalah, yang akan
membimbing menuju penyelesaian atas permasalahan utama
Memahami Merge Sort
Seperti yang telah dijelaskan sebelumnya, Merge sort
menggunakan pola divide and conquer. Dengan hal ini
deskripsi dari 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
secararekursif
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.
2) QUICKSORT
II. 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.
2. 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.
DAFTAR PUSTAKA
https://liliskriyaningsih.wordpress.com
http://id.wikipedia.org/wiki/Algoritma_sorting
http://zeftaadetya.blogspot.com/2014/02/pengertia
n-bubble-sort-dan-contoh.html
6. V.
Posisi 0 1 2 3 4 5
5 7 9 10 66 8
Temp Cek Geser
8 Temp < 41 Geser data ke-4 ke posisi 5
8 Temp < 10 Geser data ke-3 ke posisi 4
8 Temp < 9 Geser data ke-2 ke posisi 3
8 Temp > 7 -
8 Temp > 5 -
1) MERGE SORT
Sebelum mendalami algoritma merge sort, mari kita
mengetahui garis besar dari konsep divide and conquer karena
merge sort mengadaptasi pola tersebut. Beberapa algoritma
mengimplementasikan konsep rekursi untuk menyelesaikan
permasalahan. Permasalahan utama kemudian dipecah
menjadi sub-masalah, kemudian solusi dari sub-masalah akan
membimbing menuju solusi permasalahan utama.
Pada setiap tingkatan rekursi, pola tersebut terdiri atas 3
langkah.
1. Divide
Memilah masalah menjadi sub masalah
2. Conquer
Selesaikan sub masalah tersebut secara rekursif. Jika sub-
masalah tersebut cukup ringkas dan sederhana, pendekatan
penyelesaian secara langsung akan lebih efektif
3. Kombinasi
Mengkombinasikan solusi dari sub-masalah, yang akan
membimbing menuju penyelesaian atas permasalahan utama
Memahami Merge Sort
Seperti yang telah dijelaskan sebelumnya, Merge sort
menggunakan pola divide and conquer. Dengan hal ini
deskripsi dari 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
secararekursif
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.
2) QUICKSORT
II. 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.
2. 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.
DAFTAR PUSTAKA
https://liliskriyaningsih.wordpress.com
http://id.wikipedia.org/wiki/Algoritma_sorting
http://zeftaadetya.blogspot.com/2014/02/pengertia
n-bubble-sort-dan-contoh.html