Anda di halaman 1dari 5

PRAKTIKUM 4

SORTING

Tujuan Intruksional :
Pokok Bahasan ini mengenalkan macam-macam dan teknik dari algoritma
Sorting dalam Struktur Data

Kompetensi Yang Diharapkan :


Mahasiswa diharapkan memahami tentang konsep Sorting dan diharapkan dapat
mengimplementasikan penggunaan kosep Sorting dalam struktur data.
Waktu Pertemuan : 100 Menit

4.1. Dasar Teori


Pencarian informasi untuk mendapatkan suatu kesimpulan pada suatu data yang begitu
besar, akan jauh lebih mudah dan cepat apabila data yang akan di olah telah terurut. Sorting
adalah metode atau teknik untuk melakukan pertukaran (switching) tiap data tersebut,
sehingga data tersebut secara keseluruhan akan terurut. Dalam kaitannya dengan struktur
data, pengurutan dilakukan pada data yang berupa array dalam memori. Pengurutan data
dapat dilakukan secara ascending (urut naik) dan descending (urut turun).
Pada modul ini akan dijelaskan tiga buah macam teknik pengurutan yaitu teknik
gelembung (bubble sort), teknik cepat (quick sort), dan teknik penggabungan (merge sort).
Perbedaan dari ketiga teknik ini akan dijelaskan sebagai berikut.

4.2. Bubble Sort


Teknik bubble sort (gelembung), adalah teknik untuk mengurutkan data (array) dengan
mengikuti cara kerja gelembung. Teknik bubble sort termasuk teknik yang mudah di
implementasikan. Pengurutan dilakukan dari belakang array, menuju ke array yang paling
depan. Teknik ini akan memindahkan data terkecil (ascending mode) ke bagian array
terdepan. Contoh:

Array = 1 9 2 7 5

Proses = 1. 1 9 2 7 5
2. 1 9 2 5 7
3. 1 9 2 5 7
4. 1 2 9 5 7
5. 1 2 9 5 7
6. 1 2 9 5 7
7. 1 2 5 9 7
8. 1 2 5 9 7
9. 1 2 5 7 9
10 1 2 5 7 9

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA 2017/2018


Perhatikan bahwa pada contoh diatas, pada langkah ke 9, angka 2 dengan angka 1 tidak
dilakukan pengecekan, hal ini disebabkan karena pada array pertama, sudah pasti terisi
dengan data terkecil dari semua data yang ada, maka pada langkah ke 9, proses langsung di
skip ke proses berikutnya.
Lalu pada langkah ke 10, proses pengecekan berhenti, karena semua data telah terurut,
hal ini dilakukan dengan menandai pada memori apakah data telah terurut atau belum,
sehingga proses pengurutan menjadi lebih singkat.

Percobaan 1
#include<iostream>
using namespace std;
int main() {
//membuat tanda, apakah semua data telah terurut atau belum
bool terurut;

//input data
int a;
cout<<"banyak integer: ";cin>>a;
int b[a];
for (int c=0;c<a;c++){
cout<<"aray ke-"<<c<<": ";cin>>b[c];}

cout<<"melakukan proses bubble sort!\n\n";

//proses sorting
for (int c=0;c<a;c++){
terurut=false; //beri tanda bahwa data belum terurut

for (int d=a-1;d>c;d--){


//untuk menampilkan proses sorting, hilangkan komentar
/*
for (int e=0;e<a;e++){
cout<<b[e]<<", ";}
cout<<endl;
*/

//Proses pertukaran data


if (b[d]<b[d-1]){
int tmp = b[d];
b[d] = b[d-1];
b[d-1] = tmp;
terurut=true;}}
if (!terurut)
break;} //jika data telah terurut, berhenti proses

for (int e=0;e<a;e++){


cout<<b[e]<<", ";}
cout<<endl;
return 0;}

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA 2017/2018


4.3. Quick Sort
Metode Quick Sort atau teknik cepat, adalah metode pengurutan data dengan cara
memilih salah satu data sebagai pivot/kunci pembatas. Lalu melakukan Sequencial searching
dari depan dan belakang array, pencarian data dari depan adalah pencarian data yang lebih
besar dari nilai pivot, sedangkan pencarian dari belakang adalah pencarian data yang lebih
kecil dari nilai pivot, jika kedua nilai telah ditemukan, tukar kedua data tesebut, lalu bagi dua
data tersebut, dan ulangi proses untuk sub array pertama dan sub array kedua. Contoh:

Array = 1 9 2 7 5

Proses = 1. 1 9 2 7 5
2. 1 7 2 9 5
3. 1 7 2 9 5
4. 1 7 2 9 5
5. 1 7 2 9 5
6. 1 7 2 9 5
7. 1 7 2 9 5
8. 1 2 7 9 5
9. 1 2 7 9 5
10 1 2 5 9 7
11 1 2 5 9 7
11 1 2 5 9 7
12 1 2 5 9 7
13 1 2 5 7 9

Percobaan 2
#include<iostream>
using namespace std;

void tukar(int *x,int *y){


int temp;
temp = *x;
*x = *y;
*y = temp;}

void qsort(int arai[],int m,int n){


int pivot,i,j,k;
//proses dilakukan jika sub-data terdiri lebih dari 1 anggota
if( m < n){

//penandaan pivot
k = int((m+n)/2);
tukar(&arai[m],&arai[k]);
pivot = arai[m];
i = m+1;
j = n;

//pencarian data dari kiri dan kanan

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA 2017/2018


while(i <= j){
while((i <= n) && (arai[i] <= pivot))
i++;
while((j >= m) && (arai[j] > pivot))
j--;
if( i < j)
tukar(&arai[i],&arai[j]);
}
//melakukan pertukaran data
tukar(&arai[m],&arai[j]);

//lakukan sub-data
qsort(arai,m,j-1);
qsort(arai,j+1,n);}}

int main() {
int a;
cout<<"banyak integer: ";cin>>a;
int b[a];
for (int c=0;c<a;c++){
cout<<"aray ke-"<<c<<": ";cin>>b[c];}

cout<<"melakukan proses quick sort!\n\n";

qsort(b,0,a-1);
for (int e=0;e<a;e++){
cout<<b[e]<<", ";}
cout<<endl;
return 0;}

4.4. Merge Sort


Pada Metode Merge Sort atau teknik penggabungan, pengurutan data awalnya dibagi dua
secara terus menerus, sehingga hanya memiliki dua anggota tiap sub data, lalu, dilakukan
pertukaran data jika data kedua lebih kecil dari pada data pertama. Lakukan hal tersebut ke
semua sub-data. Kemudian gabungkan satu per satu setiap sub-data sehingga didapatkan data
lengkap yang terurut. Contoh:

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA 2017/2018


Percobaan 3
#include<iostream>
using namespace std;

void tukar(int *x,int *y){


int temp;
temp = *x;
*x = *y;
*y = temp;}

int msort(int arai[],int m,int n){


int tengah=int((m+n)/2);

//melakukan sub-data
if (m!=tengah){
msort(arai,m,tengah);
msort(arai,tengah+1,n);}
int tmp[n+1-m];

//membuat array temp


for (int x=0;x<=(n-m);x++){
tmp[x]=arai[m+x];}
int i=0, j=tengah+1, k=m;

//melakukan sorting
while ((k<=tengah)&(j<=n)){
tmp[i++]=(arai[j]<arai[k])?arai[j++]:arai[k++];}
while (k<=tengah){
tmp[i++]=arai[k++];}
while (j<=n){
tmp[i++]=arai[j++];}

//pemindahan array temp yang telah terurut ke array asli


for (int x=0;x<=(n-m);x++){
arai[m+x]=tmp[x];}
return 0;}

int main() {
int a;
cout<<"banyak integer: ";cin>>a;
int b[a];
for (int c=0;c<a;c++){
cout<<"aray ke-"<<c<<": ";cin>>b[c];}

cout<<"melakukan proses quick sort!\n\n";

msort(b,0,a-1);
for (int e=0;e<a;e++){
cout<<b[e]<<", ";}
cout<<endl;
return 0;}

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA 2017/2018

Anda mungkin juga menyukai