Kompleksitas Ruang Memori Algortima SMS Lingkungan Penelitian Teknik Pengembangan

kompleksitas waktu O1 dalam kasus ini. Dapat dikatakan, pada kasus rata-rata, dan terburuk prosedur sort, prosedur Sort membutuhkan kompleksitas waktu Omax f + O|min| f, di mana f adalah jumlah elemen yang sama. Dengan kata lain, kompleksitas waktu prosedur sort adalah Of max + |min|. Kompleksitas waktu kasus terbaik dari algoritma SMS adalah On, ketika array masukan sudah terurut. Ini berarti, ketika nilai max sama dengan min baris 19-21 prosedur scan maka array input sudah diurutkan. Dalam kasus rata-rata dan terburuk, prosedur scan memerlukan kompleksitas waktu On, prosedur move membutuhkan kompleksitas waktu On + max + |min|, dan prosedur sort memerlukan kompleksitas waktu Of max + |min|. Jika dianggap distribusi data adalah normal, frekuensi elemen harus sedikit, dan karena sebagian besar aplikasi nyata memiliki n jauh lebih besar dari nilai max dan |min|, dapat dipertimbangkan max dan min sebagai konstanta dan menghilangkannya. Kompleksitas waktu keseluruhan dari algoritma SMS dalam kasus rata-rata dan terburuk adalah On + f max + | min |, di mana f adalah jumlah elemen yang sama Mansi, 2010.

2.13. Kompleksitas Ruang Memori Algortima SMS

Pada kasus terbaik, jika array masukan berisikan data yang sudah terurut, algoritma SMS berhentiselesai pada prosedur Scan dan algoritma SMS tidak memerlukan ruang memori tambahan untuk mengurutkan array masukan. Jika semua elemen dari array masukan adalah positif, algoritma SMS hanya membuat 2 array baru, yakni PosArray berukuran max + 1 dan FreqArray berukuran n, atau jika semua elemen dari array masukan adalah negatif, algoritma SMS juga hanya membuat 2 array baru, yakni NegArray berukuran |min| + 1 dan FreqArray berukuran n. Dapat dikatakan dalam kasus rata-rata dan terburuk, algoritma SMS membutuhkan ruang memori tambahan sebesar On + max + | min | +2 Masni, 2010. Universita Sumatera Utara BAB III METODOLOGI PENELITIAN

3.1. Lingkungan Penelitian

Dalam penelitian ini penulis membangun algoritma pengurutan yang merupakan pengembangan dari algoritma SMS, terkait hal tersebut maka penulis akan menganalisa langkah-langkah kerja algoritma SMS dan melakukan pengembangan pada beberapa tahapan di dalam algoritma SMS tersebut, sehingga nantinya algoritma yang penulis bangun akan memiliki efisiensi kompleksitas waktu yang lebih baik dibandingkan algoritma SMS pada kasus rata-rata dan terburuk yang terjadi pada algoritma SMS.

3.2. Teknik Pengembangan

Pengembangan yang dilakukan terhadap algoritma SMS adalah pada ketiga prosedur yang terdapat pada algoritma SMS tersebut prosedur Scan, Move, dan Sort. Pada sub bab berikut ini akan terlihat pengembangan yang terjadi pada masing-masing prosedur tersebut. 3.2.1. Pengembangan prosedur scan Pada algoritma SMS tujuan dari prosedur scan hanya untuk mendapatkan nilai maksimum, nilai minimum, jumlah elemen positif, dan jumlah elemen negatif dari array masukan, maka dilakukan pengembangan sehingga prosedur scan bertujuan untuk mendapatkan nilai maksimum positif, nilai minimum positif, nilai maksimum negatif, nilai minimum negatif, jumlah elemen positif, dan jumlah elemen negatif dari Universita Sumatera Utara array masukan. Adapun kegunaan nilai maksimum positif, nilai minimum positif, nilai maksimum negatif dan nilai minimum negatif tersebut nantinya adalah untuk meminimalkan jumlah perulangan yang terjadi pada prosedur Move dan prosedur Sort. Untuk mendapatkan nilai maksimum positif, nilai minimum positif, nilai maksimum negatif, nilai minimum negatif, jumlah elemen positif, dan jumlah elemen negatif dari array masukan tersebut, pseudocode prosedur Scan dikembangkan menjadi sebagai berikut: Prosedur Scanarray, size if size 1 then 1 var a, maxpos, minpos, maxneg, minneg, NOP, NON 2 maxpos:= 0 3 minpos:=100000 4 maxneg:=-100000 5 minneg:= -1 6 NOP:=0 7 NON:=0 8 for a:= 0 to size-1 do 9 if arraya = 0 then 10 NOP:= NOP+1 11 if arraya maxpos then 12 maxpos := arraya 13 end if 14 if arraya minpos then 15 minpos:=arraya 16 end if 17 else 18 NON:= NON+1 19 if arraya minneg then 20 minneg := arraya 21 end if 22 if arraya maxneg then 23 maxneg:=arraya 24 Universita Sumatera Utara end if 25 end if 26 end for 27 if maxneg minneg then 28 maxneg = minneg 29 if minpos maxpos then 30 minpos = maxpos 31 if minpos ≠ maxpos and minneg ≠ maxneg then 32 Movearray, size, NOP, NON, maxpos, minpos, maxneg, minneg 33 end if 34 end if 35 Akhir prosedur Scan 3.2.2. Pengembangan prosedur move Pada algoritma SMS prosedur Move menciptakan 3 tiga array sementara, yakni FreqArray berukuran n, PosArray berukuran nilai maksimum tambah 1 satu, dan NegArray berukuran absolut dari nilai minimum ditambah 1 satu. Pengembangan yang dilakukan menjadikan prosedur Move bertujuan untuk menciptakan 4 empat array sementara, yakni FreqPosArray berukuran jumlah bilangan positif NOP, FreqNegArray berukuran jumlah bilangan negatif NON, PosArray berukuran nilai maksimum positif tambah 1 satu, dan NegArray berukuran absolut dari nilai minimum negatif tambah 1 satu, kemudian menginisialisasi PosArray, NegArray, FreqPosArray dan FreqNegArray dengan nilai minimum negatif dikurang 1 satu untuk yang menunjukkan indeks yang akan dilewati di fase berikutnya. Kemudian prosedur ini mendistribusikan elemen dari array masukan kepada keempat array tersebut, elemen-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, elemen-elemen positif yang sering muncul disimpan dalam FreqPosArray dan elemen-elemen negatif yang sering muncul disimpan dalam FreqNegArray. Pada prosedur Move algoritma SMS sebelumnya, perulangan untuk menginisialisasi PosArray dimulai dari 0 nol dengan step ditambah 1 satu sampai Universita Sumatera Utara dengan batas nilai maksimum, dan perulangan untuk menginisialisasi NegArray dimulai dari 0 dengan step ditambah 1 satu hingga batas absolut nilai minimum, maka pada pengembangan algoritma SMS yang dilakukan penulis jumlah perulangan tersebut diminimalkan, dimana untuk menginisialisasi PosArray dimulai dari nilai minimum positif dengan step ditambah 1 satu sampai dengan batas nilai maksimum positif, dan perulangan untuk menginisialisasi NegArray dimulai dari absolut nilai maksimum negatif dengan step ditambahi 1 satu hingga batas absolut nilai minimum negatif. FreqPosArray dan FreqNegArray merupakan array penyederhanaan dari FreqArray pada algoritma SMS sebelumnya, jika pada algoritma SMS sebelumnya seluruh elemen yang muncul lebih dari 1 satu kali sering muncul baik elemen positif maupun negatif disimpan dalam FreqArray, maka pada pengembangan algoritma SMS yang dilakukan penulis, elemen negatif yang sering muncul disimpan dalam FreqNegArray dengan menggunakan variabel j sebagai indeks dimulai dari nol dan seterusnya bertambah satu, dan elemen positif yang sering muncul disimpan dalam FreqPosArray dengan menggunakan variabel i sebagai indeks, dimulai dari nol dan seterusnya bertambah satu. Hal ini bertujuan nantinya untuk meminimalkan perulangan yang terjadi pada prosedur Sort. Untuk mencapai berbagai tujuan pengembangan diatas, pseudocode prosedur Move dikembangkan menjadi sebagai berikut: Prosedur Movearray, size, NOP, NON, maxpos, minpos, maxneg, minneg var b,c,d,i,j 1 i:=0 2 j:=0 3 create a new array: FreqPosArray[NOP] and initialize by the value minneg-1 4 create a new array: FreqNegArray[NON] and initialize by the value minneg-1 5 if NOP 0 then 6 create a new array:PosArray[maxpos+1] 7 for b:=minpos to maxpos do 8 PosArrayb:= minneg-1 9 end for 10 end if 11 Universita Sumatera Utara if NON0 then 12 create a new array: NegArray[|minneg|+1] 13 for c:= |maxneg| to |minneg| do 14 NegArrayc:= minneg-1 15 end for 16 end if 17 for d:= 0 to size-1 do 18 if arrayd = 0 then 19 if PosArrayarrayd==minneg-1 then 20 PosArrayarrayd:=arrayd 21 else 22 FreqPosArrayi:=arrayd 23 i:=i+1 24 end if 25 else 26 if NegArray|arrayd|==minneg-1 then 27 NegArray|arrayd|:= arrayd 28 else 29 FreqNegArrayj:= arrayd 30 j:= j+1 31 end if 32 end if 33 end for 34 Sort array, NegArray, PosArray, FreqPosArray, FreqNegArray, NON, NOP, maxpos, minpos, maxneg, minneg, i, j 35 Akhir prosedur Move 3.2.3. Pengembangan prosedur sort Prosedur Sort pada algoritma SMS sebelumnya bertujuan 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 Universita Sumatera Utara berisi nilai nilai minimum dikurang 1 satu. Pada prosedur Sort algoritma SMS sebelumnya, perulangan untuk penyalinan elemen-elemen negatif dari NegArray dimulai dari nilai absolut dari elemen minimum negatif dikurang 1 satu sampai batas 0 nol dan perulangan untuk penyalinan elemen-elemen positif dari PosArray dimulai dari 0 nol ditambah 1 satu sampai batas nilai maksimum. Kemudian penulis melakukan pengembangan untuk meminimalkan perulangan tersebut dengan cara perulangan untuk penyalinan elemen-elemen negatif dari NegArray dimulai dari nilai absolut elemen minimum negatif dikurang 1 satu sampai batas nilai absolut dari elemen maksimum negatif dan perulangan untuk penyalinan elemen-elemen positif dari PosArray dimulai dari nilai minimum positif ditambah 1 satu sampai batas nilai maksimum positif. Penyalinan dilakukan pada array input asli dengan menimpa nilai- nilai asli dengan nilai-nilai yang telah diurutkan. Pada prosedur Sort algoritma SMS sebelumnya, 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, yang mengakibatkan akan dilakukan perulangan sejumlah banyaknya elemen pada FreqArray setiap kali ditemukan elemen yang tidak sama dengan nilai minimum kurang 1 satu. Pengembangan yang dilakukan penulis pada prosedur Sort ini adalah meminimalkan jumlah perulangan tersebut, dengan cara jika elemen saat ini adalah positif maka pencarian akan dilakukan pada FreqPosArray dan jika elemen saat ini adalah negatif maka pencarian akan dilakukan pada FreqNegArray, banyaknya elemen pada FreqPosArray dan FreqNegArray lebih kecil dari banyaknya elemen pada FreqArray, karena FreqPosArray dan FreqNegArray adalah penyederhanaan dari FreqArray, dimana FreqPosArray menampung elemen positif dari FreqArray dan FreqNegArray menampung elemen negatif dari FreqArray. Untuk mencapai tujuan-tujuan pengembangan diatas, pseudocode prosedur Sort dikembangkan menjadi sebagai berikut : Prosedur Sortarray, NegArray, PosArray, FreqPosArray, FreqNegArray, NON, NOP, maxpos, minpos, maxneg, minneg, i, j var index,x,y 1 index:=0 2 Universita Sumatera Utara if NON 0 then 3 for x:= |minneg| downto |maxneg| do 4 if NegArrayx ≠ minneg-1 then 5 arrayindex:= NegArrayx 6 index:= index+1 7 for y:= 0 to j do 8 if FreqNegArrayy==arrayindex-1 then 9 arrayindex:= FreqNegArrayy 10 index:= index+1 11 end if 12 end for 13 end if 14 end for 15 end if 16 if NOP 0 then 17 for x:= minpos to maxpos do 18 if PosArrayx ≠ minneg-1 then 19 arrayindex:= PosArrayx 20 index:= index+1 21 for y:= 0 to i do 22 if FreqPosArrayy== arrayindex-1 then 23 arrayindex:=FreqPosArrayy 24 index:= index+1 25 end if 26 end for 27 end if 28 end for 29 end if 30 Akhir prosedur Sort Universita Sumatera Utara

3.3. Proses Analisis