Anda di halaman 1dari 2

Spaghetti sort

Algoritma ini berjalan dalam waktu O(n).


Sesuai namanya, jenis algoritma sorting ini memiliki cara kerja seperti mengurutkan batang spaghetti
dengan menggunakan tangan kita. Anggap nilai-nilai yang ingin disorting itu adalah batang spaghetti,
maka nilai yang terbesar memiliki tinggi tertinggi dari batang spaghetti, dan nilai terbesar berikutnya
memiliki tinggi tertinggi selanjutnya, dan seterusnya.
Cara kerja Spaghetti Sort :
1. Pada keadaan awal, batang-batang spaghetti tersebut masih dalam keadaan acak (belum
tersorting), lalu salah satu tangan kita memegang semua batang-batang spaghetti tersebut.
2. Kemudian tangan kita yang lain kita gerakkan sampai menyentuh permukaan yang paling atas
dari batang spaghetti tersebut (disini berarti nilai tertingginya).
3. Lalu kita pindahkan batang tertinggi tersebut kesisi paling ujung, demikian seterusnya sampai
batang-batang spaghetti tersebut sudah tersusun rapih dari yang terbesar sampai terkecil atau
sebaliknya.
Atau jika diprogram maka urutan kerjanya seperti ini:
1. Program akan mencari nilai tertinggi dari data yang diinput user.
2. Dimulai dari nilai yang berada paling ujung kiri (i), lalu nilai tersebut dibandingkan terhadap nilai
sebelahnya (i+1).
3. Jika i+1 > i, maka saling tukar posisi i+1 dengan i.
4. Jika i+1 < i, maka biarkan saja (tidak ada pertukaran posisi), lalu lanjut membandingkan i dengan
nilai sebelahnya lagi (i+2).
5. Lakukan langkah ke 3 dan ke 4 sampai nilai yang paling terakhir hingga semua nilai telah terurut.

Code algoritmanya :
void sort(void)
{
int i;
for(i = 0; i < n; i++)
while( [i] < [i+1])
{
swap([i], [i+1]); //menukar posisi [i+1] menjadi [i].

}
}

Kelebihan :
algoritma ini memiliki cara pengurutan dengan membandingkan satu per satu nilainya, dengan
demikian keakuratan dari sortingan ini terjamin.
Kekurangan :
algoritma ini membutuhkan waktu yang cukup lama karena tiap elemen data (nilai) dibandingkan satu
persatu hingga selesai, dan hal ini menjadikan proses menjadi sedikit lama.