SORTING /PENGURUTAN
NAMA : BELLA CLARA STEPHANY
NIM : 09031181320056
Tugas :
1.
Definisi dari sorting/pengurutan ?
2.
Tujuan dari sorting/pengurutan?
3.
Buatlah sebuah program C++ selection
sort dan bubble sort.
4.
Buatlah algoritma dari selection sort
baik itu flowchat ataupun pseudocode.
Jawabaan :
1.
Definisi sorting / pengurutan
Dalam
Bahasa pemograman C++ pengurutan disebut juga dengan “Sorting“. Pengurutan atau “Sorting“ adalah suatu
proses menyusun kembali data yang sebelumnya telah disusun dengan suatu pola
tertentu, sehingga tersusun secara teratur menurut aturan tertentu ( untuk data
yang bertipe numerik atau karakter).Misalkan dalam kehidupan sehari-hari
qta dihadapkan dalam memilih pakaian dalam lemari lebih sulit kalau pakaian
tersebut berantakan tempatnya tentunya pakaian yang sudah terurut akan lebih
cepat untuk dicari.Berdasarkan atas pemilahan warna/jenis pakaian.
Pengurutan
data dalam pemograman biasanya dan pada umumnya untuk data yang bertipe data
numerik ataupun karakter. Pada bahasa pemograman terdapat 2 macam pengurutan yaitu,
ascending (urut naik) dan descending urut turun. Ascending (urut naik)
merupakan pengurutan dari angka yang nilainya lebih kecil kemudian menuju ke
nilainya yang lebih besar. Sedangkan descending (urut turun) adalah sebaliknya,
yaitu pengurutan dari nilainya yang lebih besar kemudian menuju ke nilainya
yang lebih kecil.
Contoh:
• Data dipilih secara acak : 14 8 10 12 2 6 4
• Ascending (urut naik) : 2 4 6 8 10 12 14
• Descending (urut turun) : 14 12 10 8 6 4 2
Contoh:
• Data dipilih secara acak : 14 8 10 12 2 6 4
• Ascending (urut naik) : 2 4 6 8 10 12 14
• Descending (urut turun) : 14 12 10 8 6 4 2
A.
Macam-macam pengurutan (sorting)
1. Bubble Sort
Nah, penjelasan awal adalah Metode bubble sort. Buble Sort merupakan metode yang sangat simpel dan mudah untuk melakukan pengurutan data , namun setiap metode tersebut pasti memiliki kelemahan dan keunggulan. Walaupun sangat sederhana namun, Metode ini mempunyai kelemahan yaitu, pada saat mengurutkan data yang sangat besar akan mengalami kekacuan, atau kinerja nya kurang baik. Mungkin kalian bingung ya, knapa sih namanya Buble, knapa nggak Circle Sort atau Soda sort aja (maav ney bukannya ngubah-ngubah metode). Berikut ini penjelasannya, “Bubble” karena proses pengurutan data nya tersebut secara bertahap bergerak/berpindah ke posisinya sesuai urutannya, misalkan saja anda meniup segelas air dengan menggunakan sedotan , tentunya akan mengeluarkan gelembung yang saling berurutan keluar dalam pipet. Pengurutan data Buble Sort dilakukan dengan cara membandingkan elemen sekarang dengan elemen berikutnya. Penukaran tersebut baru dilakukan kalau kriterianya tersebut sudah terpenuhi.
contoh :
#include <conio.h>#include <iostream.h>
int n,i,j,k,data[20],simpan;
void main(){
cout<<"NAMA : BELLA CLARA STEPHANY\n";
cout<<"NIM : 09031181320056\n";
cout<<"PENGURUTAN DATA\n\n";
cout<<"Masukkan banyak data = ";cin>>n;
i=1;
do{
cout<<"Data ke-"<<i<<" = ";cin>>data[i];
i++;
}while(i<=n);
cout<<endl<<"Data sebelum diurutkan :"<<endl;
i=1;
do{
cout<<data[i]<<" ";
i++;
}while(i<=n);
for(i=1;i<=n-1;i++){
for(j=1;j<=n-1;j++){
if(data[j]>data[j+1]){
simpan=data[j];
data[j]=data[j+1];
data[j+1]=simpan;
}
}
}
cout<<endl<<"Buble Sort :"<<endl;
i=1;
do{
cout<<data[i]<<" ";
i++;
}while(i<=n);
getch();
}
hasil dari run program :
prom saya jalankan menggunakan TURBO C++
Pengurutan Ascending (urut naik) : Jika elemen sekarang lebih besar dari elemen berikutnya maka kedua elemen tersebut ditukar. Pengurutan Descending ( urut turun): Jika elemen sekarang lebih kecil dari elemen berikutnya, maka kedua elemen tersebut ditukar. Nah, Algoritma ini seolah-olah menggeser satu per satu elemen dari kanan ke kiri atau kiri ke kanan, Sekarang tergantung jenis pengurutannya, ascending (urut naik) atau descending (urut turun). Ketika satu proses telah selesai, maka bubble sort akan mengulangi proses, demikian seterusnya sampai dengan iterasi sebanyak n-1. Bubble Sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah diinginkan.
2. Selection Sort
Metode yang ketiga adalah Selection Sort merupakan metode pengurutan data kombinasi antara sorting dan searching. Kinerja metode ini sebagai berikut ini : Mula – mula suatu petunjuk (diberi nama posAwal ) yang menunjuk lokasi awal pengurutan data diatur agar berisi indeks pertama dalam larik. Selanjutnya dicari bilangan terkecil yang terletak antara posisi sesudah yang ditunjuk oleh penunjuk tersebut element yang terakhir dalam larik. Lokasi bilangan ini di tunjuk oleh posMin. Lalu tukarkan nilai bilangan terkecil tersebut dengan nilai yang di tunjukkan posAwal. Proses seperti ini di ulang dari posAwal bernilai 0 hingga n-2 , dengan n menyatakan jumlah element larik
2.
Tujuan dari pengurutan atau sorting
Tujuan dari pada pengurutan
(sorting) adalah :
1. untuk membantu proses pencarian (searching)
2. Menyelesaikan masalah-masalah kompleks seperti penjadwalan (scheduling), pengolahan basis data, riset operasi, dan sebagainya.
1. untuk membantu proses pencarian (searching)
2. Menyelesaikan masalah-masalah kompleks seperti penjadwalan (scheduling), pengolahan basis data, riset operasi, dan sebagainya.
3. Contoh program selection sort :
#include <conio.h>
#include <iostream.h>
int n,i,j,k,data[20],simpan;
void main(){
cout<<"NAMA : BELLA CLARA STEPHANY\n";
cout<<"NIM
: 09031181320056\n";
cout<<"PENGURUTAN
DATA\n\n";
cout<<"Masukkan banyak data =
";cin>>n;
for(i=1;i<=n;i++)
{
cout<<"Data
ke-"<<i<<" = ";cin>>data[i];
}
cout<<endl<<"Eksekusi Program
:"<<endl;
cout<<"awal = \n";
for(i=1;i<=n;i++)
cout<<data[i]<<" ";
cout<<endl<<endl;
for(i=2;i<=n;i++)
{
j=i;
while (j>0&&data[j]<data[j-1])
{
simpan=data[j];
data[j]=data[j-1];
data[j-1]=simpan;
j--;
for(k=1;k<=n;k++)
cout<<data[k]<<" ";
cout<<endl;
}
}
cout<<endl<<"HASIL
PENGURUTAN:"<<endl;
for(i=1;i<=n;i++)
cout<<data[i]<<" ";
getch();
}
Hasil setelah dirun :
4.
Algoritma dari Selection Sort
ALGORITMA
a.
Pseudcode dari Selection Sort
1)
Terdapat sebuah array data a[0]
sampai a[n-1]
2) Melakukan
perulangan (dengan variable j) dari j = 0 sampai j < (n-1)
Lakukan
langkah 3 – 6.
for
(int j = 0; j < (n-1); j++) {
3) Menjadikan
j sebagai nilai min.
4) Melakukan
perulangan (dengan variable i) dari i = j+1 sampai i < n
Lakukan langkah 5.
int min = j;
for (int i = j+1; i < n;
i++) {
5) Membandingkan
nilai a[i] dengan a[min].
Kalau a[i]
< a[min], jadikan min = i
if
(a[i] < a[min]) {min = i; }
6)
Melakukan proses swap (tukar)
untuk a[j] dengan a[min].
int
temp = array[y];
array[y] = array[min];
array[min]
= temp;
7) SELESAI.
PERBANDINGAN
ALGORITMA
Untuk kasus-kasus sederhana dengan
jumlah data sedikit, Selection Sort dapat diunggulkan
bila dibandingkan dengan Bubble Sort
atau Gnome Sort. Algoritma pengurutan
ini sangat mirip bila dibandingkan dengan Insertion
Sort. Perbedaannya, Insertion Sort
hanya akan mendeteksi elemen-elemen yang diperlukan; sedangkan Selection Sort akan mendeteksi semua
elemen dari awal sampai akhir kemudian baru diurutkan. Untuk jumlah data
sedikit, perbandingan kecepatan pengurutan Insertion
Sort dan Selection Sort bisa
sekitar 1 : 2. Jadi, untuk kebanyakan kasus, Insertion Sort lebih cepat setengah perbandingan. Untuk data-data
yang banyak, Selection Sort dapat
diandalkan dengan algoritmanya ‘divide and conquer’ seperti pada Merge Sort.