Algoritma SMS Scan, Move and Sort Konsep Algoritma SMS Langkah-Langkah Algoritma SMS.

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