Wednesday, December 26, 2018

11. PENGURUTAN ATAU SHORTING C++


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