Pengurutan atau shorting merupakan suatu proses
penyusunan ulang kumpulan objek berdasarkan urutan tertentu. Pengurutan
mempunyai tujuan untuk mempermudah dan mempercepat pencarian data yang
diinginkan. Contoh pengurutan yang sering digunakan yaitu pengurutan nilai
hasil ujian, pengurutan daftar pustaka, pen gurutan daftar isi, dan lain-lain.
Proses yang terjadi dalam pengurutan yaitu proses perbandingan data dan proses
pertukaran data.
Terdapat tiga metode yang akan
kita bahas dalam proses pengurutan. Tiga metode tersebut adalah metode selection short, bubble sort, dan insertion
sort. Nah, sekarang akan kita
bahas secara lengkap metode-metode tersebut.
11.2
Metode Selection Short
Metode selection short merupakan metode yangdigunakan untuk mencari elemen
yang tepat untuk diletakkan di posisi yang telah diketahui, dan meletakkan elemen
tersebut di posisi data yang telah ditentukan. Metode selection short dibedakan menjadi dua yaitu pengurutan naik (ascending) dan pengurutan naik (descending).
a.
Pengurutan naik (ascending)
Proses dari pengurutan
dengan menggunakan metode pengurutan naik adalah sebagai berikut:
1.
Menentukan data
terkecil dari data pertama hingga data terakhir kemudian ditukar posisinya
dengan data pertama.
2.
Menentukan data
terkecil dari data kedua hingga data terakhir, kemudian ditukar posisinya
dengan data kedua.
3.
Menentukan data
terkecil dari data ketiga hingga data terakhir, kemudian ditukar posisinya
dengan data ketiga dan begitupun seterusnya hingga semua data terurut naik.
Contoh kode pemrograman
untuk pengurutan dengan menggunakan metode pengurutan naik adalah sebagai
berikut:
#include
main ()
{
int i, j, i ndexmi n, n, temp;
int data [n];
printf (“Berapa data yang akan
diurutkan?”);
scanf (“%i”,&n);
//input data pada array
for (i=0; i < n;1 ++)
{
printf (“Masukkan data ke-%i – “, i+1);
scanf (“%i”, &data a [i]);
}
for (i=0; i
{
i ndexmi n=i;
//pencarian i ndeks letak data paling
kecil/minimal
for (j=i;j
{
if (data [j]
//jika data pada index ke i tidak sama
dengan data minimal, maka ditukar
if (data[i]) != (data [i ndexmi n])
{
temp-data [i];
dta [i] – data [i ndexmi n];
data [i ndexmi n] = temp;
}
}
//output
data setelah diurutkan
printf
(“Setelah pengurutan\n”);
for
(i=0; i
{
printf (“Elemen ke-%i = %i \n”, i+1, data [i];
}
}
Tampilan program:
Berapa
data yang akan diurutkan?
Masukkan
data ke-1 = 25
Masukkan
data ke-2 = 14
Masukkan
data ke-3 = 40
Masukkan
data ke-4 = 20
Masukkan
data ke-5 = 15
Setelah
pengurutan
Elemen
ke-1 = 14
Elemen
ke-2 = 15
Elemen
ke-3 = 20
Eleen
ke-4 = 25
Elemen
ke-5 = 40
b.
Pengurutan turun
(descending)
Langkah-langkah yang
dilakukan untuk melakukan pengurutan turun adalah sebagai berikut:
1.
Menentukan data
terbesar dari data pertama hingga data terakhir kemudian ditukar posisinya
dengan data pertama.
2.
Menentukan data terbesar
dari data kedua hingga data terakhir, kemudian ditukar posisinya dengan data
kedua.
3.
Menentukan data
terbesar dari data ketiga hingga data terakhir, kemudian ditukar posisinya
dengan data ketiga dan begitupun seterusnya hingga semua data terurut naik.
Contoh kode
pemrograman untuk pengurutan dengan menggunakan metode pengurutan naik adalah
sebagai berikut:
#include
main ()
{
int i, j, index min, n, temp;
int data [n];
printf (“Berapa data ya ng akan
diurutkan?”;
scanf (“%i”,&n);
//input data pada array
for (i=0; i < n;1 ++)
{
printf (“Masukkan data ke-%i – “, i+1);
scanf (“%i”, &data a [i]);
}
for (i=0; i
{
i ndexmax=i;
//pencarian i ndeks letak data paling
besar
for (j=i;j
{
if (data [j]
//jika data pada index ke i tidak sama
dengan data maksimal, maka ditukar
if (data[i]) != (data [i ndexmax])
{
temp-data [i];
dta [i] – data [i ndexmax];
data [i ndexmax] = temp;
}
}
//output
data setelah diurutkan
printf
(“Setelah pengurutan\n”);
for
(i=0; i
{
printf (“Elemen ke-%i = %i \n”, i+1, data [i];
}
}
Tampilan program:
Berapa
data yang akan diurutkan?
Masukkan
data ke-1 = 25
Masukkan
data ke-2 = 14
Masukkan
data ke-3 = 40
Masukkan
data ke-4 = 20
Masukkan
data ke-5 = 15
Setelah
pengurutan
Elemen
ke-1 = 14
Elemen
ke-2 = 15
Elemen
ke-3 = 20
Elemen
ke-4 = 25
Elemen
ke-5 = 40
11.3 Metode Bubble sort
Metode bubble sort merupakan metode pengurutan data yang dilakukan dengan
cara membandingkan elemen data sekarang dengan elemen data selanjutnya yang
berdekatan. Metode buble sort dibedakan menjadi dua yaitu pengurutan naik
(descending) dan pengurutan turun (ascending).
Pengurutan naik mengurutkan data yang
berada di sebelah kanannya bernilai lebih kecil kemudian ditukar hingga semua
data terurut. Pengurutan naik memunculkan data yang terbesar berada di posisi
paling kanan, begitupun sebaliknya dengan pengurutan turun.
Contoh kode program untuk
pengurutan naik adalah sebagai berikut:
#include
main ()
{
int i, j, n, temp;
int data[n];
printf (“Berapa data yang
diurutkan?”);
scanf (“%i”, &n);
//input data pada array
for (i=0; i
{
printf (“Masukkan data ke-%i =
“,i+1);
scanf (“%i”, &data [i]);
}
//proses pengurutan bubble sort
for (i=1;1
{
for (j=0;j
{
if (data [j] > data [j+1])
{
temp=data [j];
data [j] = data [j+1];
data [j+1] = temp;
}
}
}
printf (“Setelah pengurutan\n”);
for (i=0;i
{
printf (“Elemen ke-%i = %i\n, i+1,
data [i]);
}
}
Tampilan
program:
Berapa
data yang akan diurutkan?
Masukkan
data ke-1 = 20
Masukkan
data ke-2 = 5
Masukkan
data ke-3 = 3
Masukkan
data ke-4 = 1
Masukkan
data ke-5 = 14
Setelah
pengurutan
Elemen
ke-1 = 1
Elemen
ke-2 = 3
Elemen
ke-3 = 5
Elemen
ke-4 = 14
Elemen
ke-5 = 20
11.4 Metode Insertion Sort
Metode insertion sort merupakan metode pengurutan data yang
dilakukan dengan cara memilih data yang akan diurutka menjadi dua bagian, yaitu
bagian yang belum diurutkan dan bagian yang sudah diurutkan. Elemen pertama
pada insertion sort diambil dari bagian array yang belum diurutkan kemudian
diletakkan sesuai dengan posisinya pada bagian lain yang telah diurutkan.
Langkah tersebut dilakukan hingga elemen terakhir.
Contoh kode pemrograman pada
insertion sort adalah sebagai berikut:
#include
int main ()
{
int n, array [1000], c, d, t;
printf(“Masukkan banyak Elemen”)
scanf (“%d”, &n);
printf (“Masukkan %d bilangan \n”,
n);
for (c=0; c
{
scanf (“%d”, &array [c]);
}
for (c=1; c<=n-1; c++)
{
d = c;
while (d>0 && array
[d]
{
t = array [d];
array [[d] = array [d-1];
array [d-1] = t;
d--;
}
}
printf (“Data yang sudah terurut :\n”);
for (c=0; c<=n-1; c++)
{
printf (“%d\n”, array [c]);
}
return 0;
}
Tampilan
program:
Masukkan
banyak elemen 5
Masukkan
5 bilangan
12
45
23
54
46
Data
yang sudah terurut
12
23
45
46
54
Latihan
Soal!
1.
Apa saja manfaat dari masing-masing
jenis pengurutan?
2.
Apakah perbedaan
metode bubble sort dengan insertion sort?
3.
Sebutkan langkah dalam
pengurutan menggunakan metode insertion
sort!
No comments:
Post a Comment