Anda di halaman 1dari 8

ALGORITMA PENGURUTAN

Defenisi
Sorting bisa didefinisikan sebagai suatu proses pengurutan data yang sebelumnya
disusun secara acak sehingga menjadi tersusun secara teratur menurut suatu aturan tertentu.
Pada umumnya terdapat dua jenis pengurutan:
 Ascending (Naik).
 Descending (Turun).
Metode Pengurutan Data
1. Pengurutanberdasarkanperbandingan(comparison-based sorting)
 Bubble sort, exchange sort
2. Pengurutanberdasarkanprioritas(priority queue sorting method)
 Selection sort, heap sort
3. Pengurutanberdasarkanpenyisipandanpenjagaanterurut(insert and  keep sorted
method)
 Insertion sort, tree sort
4. Pengurutanberdasarkanpembagiandanpenguasaan(devideand conquer method)
 Quick sort, merge sort
5. Pengurutanberkurangmenurun(diminishing increment sort method)
 Shell sort
1.      Bubble Sort
Pengertian :
Bubble sort (metode gelembung) adalah metode / algoritma pengurutan dengan dengan cara
melakukan penukaran data dengan tepat disebelahnya secara terus menerus sampai bisa
dipastikan dalam satu iterasi tertentu tidak ada lagi perubahan. Jika tidak ada perubahan
berarti data sudah terurut. Disebut pengurutan gelembung karena masing-masing kunci akan
dengan lambat menggelembung ke posisinya yang tepat.

2.      Selection Sort
SELECTION SORT Merupakan kombinasi antara sorting dan searching. Untuk setiap proses,
akan dicari elemen-elemen yang belum diurutkan yang memiliki nilai terkecil atau terbesar
akan dipertukarkan ke posisi yang tepat di dalam array. Misalnya untuk putaran pertama, akan
dicari data dengan nilai terkecil dan data ini akan ditempatkan di indeks terkecil (data[0]), pada
putaran kedua akan dicari data kedua terkecil, dan akan ditempatkan di indeks kedua (data[1]).
Selama proses, pembandingan dan pengubahan hanya dilakukan pada indeks pembanding saja,
pertukaran data secara fisik terjadi pada akhir proses. 
Sintaks program fungsi 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(pos,i);
}
}

3.      Insertion Sort
       Salah satu algoritma sorting yang paling sederhana adalah insertion sort. Insertion Sort
disebut-sebut sebagai metode pertengahan. Artinya, metode ini memiliki kecepatan ratarata
antara metode primitif (bubble dan selection) dan modern (merge dan quick) . Metode ini,
didasarkan pada sebuah kunci yang diambil pada elemen ke-2 pada sebuah larik, lalu
menyisipkan elemen tersebut jika kondisi percabangan terpenuhi. Metode penyisipan
(insertion) bertujuan untuk menjadikan bagian sisi kiri larik terurutkan sampai dengan seluruh
larik berhasil diurutkan. 

Pseudocode untuk algoritma insertion sort adalah sebagai berikut: 

        insertionsort(data[],n) 
        for(i = 1; i < n; i++)
pindahkan seluruh elemen data[j] yang lebih besar daripada data[i] sebanyak satu posisi; 
geser data[ i ] pada posisi yang tepat;
Sintaks program fungsi Insertion Sort
void insertion_sort()
{
int temp;
for(int i=1;i<n;i++)
   {
temp = data[i];
j = i -1;
while(data[j]>temp && j>=0)
      {
data[j+1] = data[j];
   j--;
}
data[j+1] = temp;
}
}

4.      Heap Sort
Pengertian :
Heapsort merupakan salah satu bentuk dari selection sort yang memiliki kompleksitas algorima
O(n log(n)) yang menggunakan struktur data heap. Algoritma ini bekerja dengan menentukan
elemen terbesar (atau terkecil) dari sebuah daftar elemen, dan diletakkan pada akhir (atau
awal) dari daftar tersebut. Heap sort menyelesaikan sebuah pengurutan menggunakan struktur
data yang disebut heap. Heap merupakan sebuah pohon biner hampir lengkap dimana isi dari
simpul ayah selalu lebih besar dari isi simpul anak-anaknya sehingga simpul akar selalu
merupakan elemen terbesar.

5.      Shell Sort
Pengertian :
Algoritma ini memiliki kesamaan cara kerja dengan insertion sort, yaitu membandingkan
elemen-elemen dengan jarak tertentu. Insertion sort membandingkan elemen–elemen data
yang berdekatan (berjarak satu posisi), sedangkan shell sort membandingkan elemen berjarak
tertentu, misalnya elemen yang berjarak 5 posisi atau 2 posisi dan pada akhirnya akan selesai
pada pengurutan data yang berjarak 1 posisi. Namun nilai ini haruslah dicari sedemikian rupa
agar tidak menulangi atau merusak hasil sorting sebelumnya.

6.      Quick Sort
Pengertian :
Pengurutan ini berdasar pada prinsip devide and conquer. Devide adalah suatu langkah
memilah masalah menjadi sub – masalah dalam proses rekursi, sedangkan conquer adalah
proses menyelesaikan sub masalah tersebut, kemudian dilakukan pendekatan terhadap
masalah utama. Pada dasarnya prinsip kerjanya adalah membagi atau memartisi sekumpulan
data menjadi dua bagian sedemikian rupa sehingga elemen ke-i berada tepat pada posisisnya,
dimana semua elemen yang nilainya lebih kecil daripada elemen ke-i akan terletak disebelah
kirinya, sedangkan yang mempunyai nilai lebih besar berada disebelah kanannya. Algoritma ini
memiliki kompleksitas O(n log n).

7.      Merge Sort
Pengertian :
Merge sort merupakan salah satu teknik sorting yang menurutkan suatu data dengan cara
penggabungan. Merge sort juga menggunakan proses divide and conquer pada rekursi. Berikut
adalah langkah kerja merge sort :
Devide       : Memilah elemen – elemen dari data menjadi dua bagian.
Conquer    : Menyelesaikan setiap bagian dengan memanggil prosedur merge sort secara
rekursif.
Kombinasi : Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan
rangkaian data berurutan.
Proses rekursi akan berhenti jika telah mencapai lemen dasar, atau artinya jika bagian yang
diurutkan menyisakan tepat satu elemen. Sisa pengurutan satu elemen tersebut menandakan
bahwa bagian tersebut telah sesuai rangkaian.
8.      Radix Sort
Pengertian :
Radix sort adalah salah satu algoritma sorting yang dilakukan tanpa melakukan perbandingan
antardata yang dijadikan sebagai input. Makna harfiah Radix dapat diartikan sebagai posisi
dalam angka. Dalam system decimal, radix adalah digit dalam angka decimal. Misalkan angka 37
mempunyai nilai radix 3 dan 7. Berdasarkan urutan pemrosesan radix-nya, ada 2 macam Radix
sort. Pertama adalah LSD (Least Significant Digit) yaitu proses dimulai dari radix yang paling
tidak signifikan(digit yang paling kanan). Kedua adalah MSD (Most Significant Digit), yaitu
proses dimulai dari radix yang paling signifikan (digit yang paling kiri).

Anda mungkin juga menyukai