2. Selection Sort Algoritma yang dikategorikan dalam Selection Sort jika cara kerja algoritma
tersebut mencari elemen yang tepat untuk diletakkan pada posisi yang telah diketahui, dan meletakkannya di posisi tersebut setelah data tersebut ditemukan. Contohnya
Selection sort, Heap sort, Smooth sort, Strand sort. 3. Insertion Sort
Algoritma yang dikategorikan dalam Insertion Sort jika cara kerja algoritma tersebut mencari tempat yang tepat untuk suatu elemen data yang telah diketahui ke
dalam subkumpulan data yang telah terurut, kemudian melakukan penyisipan insertion data di tempat yang tepat tersebut. Contohnya adalah Insertion sort, Shell
sort, Tree sort, Library sort, Patience sort. 4. Merge Sort
Algoritma yang dikategorikan dalam Merge Sort jika cara kerja algoritma tersebut membagi data menjadi subkumpulan-subkumpulan yang kemudian subkumpulan
tersebut diurutkan secara terpisah, dan kemudian digabungkan kembali dengan metode merging. algoritma ini melakukan metode pengurutan merge sort juga untuk
mengurutkan subkumpulandata tersebut, atau dengan kata lain, pengurutan dilakukan secara rekursif. Contohnya adalah Merge sort.
5. Non Comparison Sort Algoritma yang dikategorikan dalam Non Comparison Sort jika proses pengurutan
data yang dilakukan algoritma tersebut tidak terdapat pembandingan antardata, data diurutkan sesuai dengan pigeon hole principle. Contohnya adalah Radix sort, Bucket
sort, Counting sort, Pigeonhole sort, Tally sort.
2.8. Algoritma SMS Scan, Move and Sort
Algoritma SMS diperkenalkan oleh Rami Mansi pada 2 April 2010, yang merupakan peningkatan dari algoritma Quicksort. Karena algoritma SMS merupakan peningkatan
dari algoritma Qiucksort, berarti algoritma SMS dikategorikan dalam algoritma Exchange Sort. Dalam kasus terbaik, algoritma SMS membutuhkan kompleksitas
waktu On. Dalam kasus rata-rata algoritma SMS membutuhkan kompleksitas waktu On + f nilai maksimum + |nilai minimum|, di mana f adalah jumlah elemen yang
Universita Sumatera Utara
sering muncul. Peningkatan pada kasus rata-rata terjadi ketika n adalah jauh lebih besar dari pada nilai maksimum dan |nilai minimum|, di mana kompleksitas waktu
mendekati On. Ketika berurusan dengan berbagai elemen yang berbeda, algoritma SMS lebih efisien dari pada algoritma quicksort. Dalam kasus terburuk, algoritma
SMS membutuhkan kompleksitas waktu On + f nilai maksimum + |nilai minimum| Mansi, 2010.
2.9. Konsep Algoritma SMS
Konsep utama dari algoritma SMS mendistribusikan elemen dari array masukan pada tiga array tambahan sementara. Ukuran dari array ditentukan dan tergantung pada nilai
maksimum dan nilai minimum dari array masukan. Array tambahan pertama disebut PosArray yang menampung elemen-elemen yang bernilai positif dari array masukan
dan menggunakan nilai dari elemen itu sendiri sebagai indeks dalam array. Array kedua adalah NegArray yang menampung elemen-elemen yang bernilai
negatif dari array masukan dan menggunakan nilai absolut dari elemen itu sendiri sebagai indeks dalam array. Array ketiga adalah FreqArray dan digunakan untuk
menyimpan elemen yang muncul lebih dari 1 satu kali sering muncul dari array masukan Mansi, 2010.
2.10. Langkah-Langkah Algoritma SMS.
Algoritma SMS terdiri dari tiga prosedur, yakni Scan, Move, dan Sort. Prosedur pertama adalah Scan kenal, yang mengenali array dan berguna untuk mendapatkan
nilai minimum, nilai maksimum, jumlah elemen positif, dan jumlah elemen negatif dari array masukan. Selain itu, prosedur ini memeriksa apakah nilai minimum sama
dengan nilai maksimum, jika sama berarti array input sudah adalah array yang sudah terurut, jika tidak sama maka dilanjutkan ke prosedur move.
Prosedur kedua adalah prosedur Move pindah yang menciptakan tiga array sementara, FreqArray berukuran n, PosArray berukuran nilai maksimal tambah 1
satu, dan NegArray berukuran absolut dari nilai minimum ditambah 1 satu, dan kemudian menginisialisasi PosArray, NegArray, dan FreqArray dengan nilai
Universita Sumatera Utara
minimum dikurang 1 satu untuk yang menunjukkan indeks yang akan dilewati di fase berikutnya. Kemudian, prosedur ini mendistribusikan elemen pada tiga array,
elemen positif disimpan dalam PosArray menggunakan elemen itu sendiri sebagai indeks, elemen-elemen negatif disimpan dalam NegArray menggunakan nilai absolut
dari elemen itu sendiri sebagai indeks, dan elemen yang sering muncul disimpan dalam FreqArray menggunakan variabel i sebagai indeks dimulai dari nol dan
seterusnya bertambah satu. Prosedur ketiga adalah prosedur Sort pengurutan yang menyalin elemen-elemen
dari NegArray mulai dari indeks terakhir dan mengabaikan elemen NegArray yang berisi nilai minimum kurang 1 satu. Kemudian menyalin elemen-elemen dari
PosArray mulai dari indeks pertama dan juga mengabaikan elemen PosArray yang berisi nilai nilai minimum dikurang 1 satu. Penyalinan dilakukan pada array input
asli dengan menimpa nilai-nilai asli dengan nilai-nilai yang telah diurutkan. Setelah menyalin setiap elemen dari NegArray dan PosArray ke array yang asli, kemudian
dilanjutkan prosedur pencarian FreqArray dan menyalin semua elemen yang sama dengan elemen yang disalin dalam operasi penyalinan terakhir elemen saat ini
Mansi, 2010.
2.11. Pseudocode Algoritma SMS