You are on page 1of 5

Nama: Rizki Mudhar

kelas se c nim:109091000117

1. Selection sort,

Algoritma di dalam Selection Sort terdiri dari kalang bersarang. Dimana kalang tingkat pertama (disebut pass) berlangsung N-1 kali. Di dalam kalang kedua, dicari elemen dengan nilai terkecil. Jika didapat, indeks yang didapat ditimpakan ke variabel min. Lalu dilakukan proses penukaran. Begitu seterusnya untuk setiap Pass. Pass sendiri makin berkurang hingga nilainya menjadi semakin kecil. Berdasarkan operasi perbandingan elemennya:

Berarti kompleksitasnya secara simptotik adalah O(n2). Adapun grafik efisiensi selection sort dapat dilihat pada tabel dibawah ini:

Grafik Kompleksitas Selection Sort

Pengurutan model ini tergolong buruk dan lebih baik dihindari penggunaannya, terutama untuk penanganan tabel dengan lebih dari 1000 elemen. Karena masih ada algoritma lain yang implementasinya sama mudahnya, namun performansinya jauh lebih baik. Algoritma yang dimaksud adalah insertion sort. Selection Sort ini pada dasarnya merupakan algoritma sorting yang tidak stabil, namun dapat diubah menjadi stabil pada kasus tertentu. Algoritma sorting yang stabil akan mampu memanfaatkan relatifitas antar record melalui definisi di tiap-tiap keys yang dimiliki oleh record tersebut. Misalkan ada dua record R dan S dengan key yang sama

dan dengan ketentuan R muncul sebelum S, maka pada hasil output akan muncul R sebelum S. Namun ketika terdapat elemen yang sama (tidak dapat dibedakan) pada umumnya terdapat pada tipe data integer, stabilitas akan kembali di utamakan. Misal terdapat pasangan data berikut yang akan diurutkan berdasarkan komponen pertama: (4, 1) (3, 7) (3, 1) (5, 6) Pada kasus ini, akan menghasilkan dua output yang berbeda, dimana salah satunya akan memperhatikan key dari data dalam pengurutan dan solusi yang lain tidak. (3, 7) (3, 1) (4, 1) (5, 6) (order maintained/ stable) (3, 1) (3, 7) (4, 1) (5, 6) (order changed/ unstable) Algoritma sorting yang tidak stabil akan mengubah keterhubungan antar record berdasarkan key yang dimiliki, namun algoritma stabil akan mengabaikan key tersebut. Bagaimanapun juga algoritma yang stabil tetap bisa diubah menjadi tidak stabil dengan membandingkan key yang dimilikki tiap-tiap recordnya. Insertion sort Algoritma Insertion Sort juga terdiri dari 2 kalang bersarang. Dimana terjadi N-1 Pass (dengan N adalah banyak elemen struktur data), dengan masing-masing Pass terjadi i kali operasi perbandingan. i tersebut bernilai 1 untuk Pass pertama, bernilai 2 untuk Pass kedua, begitu seterusnya hingga Pass ke N-1.

Secara Kompleksitas, selection sort dan insertion sort mempunyai Big-Oh yang sama. Walaupun begitu, insertion sort sebenarnya lebih mangkus. Perhatikan gambar berikut:

Grafik Kompleksitas Insertion Sort

Berdasarkan gambar, Insertion Sort 40% lebih cepat daripada Selection Sort. Namun, Insertion Sort mempunyai kekurangan. Insertion Sort lebih baik tidak digunakan untuk menangani struktur data dengan lebih dari 2000 elemen. Buble sort
Kompleksitas Algoritma Bubble Sort dapat dilihat dari beberapa jenis kasus, yaitu worst-case, average-case, dan best-case. Kondisi Best-Case Dalam kasus ini, data yang akan disorting telah terurut sebelumnya, sehingga proses perbandingan hanya dilakukan sebanyak (n-1) kali, dengan satu kali pass. Proses perbandingan dilakukan hanya untuk memverifikasi keurutan data. Contoh Best-Case dapat dilihat pada pengurutan data 1 2 3 4 di bawah ini. Pass Pertama (1 2 3 4) menjadi (1 2 3 4) (1 2 3 4) menjadi (1 2 3 4) (1 2 3 4) menjadi (1 2 3 4) Dari proses di atas, dapat dilihat bahwa tidak terjadi penukaran posisi satu kalipun, sehingga tidak dilakukan pass selanjutnya. Perbandingan elemen dilakukan sebanyak tiga kali. Proses perbandingan pada kondisi ini hanya dilakukan sebanyak (n-1) kali. Persamaan Big-O yang diperoleh dari proses ini adalah O(n). Dengan kata lain, pada kondisi Best-Case algoritma Bubble Sort termasuk pada algoritma lanjar. Kondisi Worst-Case Dalam kasus ini, data terkecil berada pada ujung array. Contoh Worst-Case dapat dilihat pada pengurutan data 4 3 2 1 di bawah ini. Pass Pertama (4 3 2 1) menjadi (3 4 2 1) (3 4 2 1) menjadi (3 2 4 1) (3 2 4 1) menjadi (3 2 1 4) Pass Kedua (3 2 1 4) menjadi (2 3 1 4) (2 3 1 4) menjadi (2 1 3 4) (2 1 3 4) menjadi (2 1 3 4) Pass Ketiga (2 1 3 4) menjadi (1 2 3 4) (1 2 3 4) menjadi (1 2 3 4) (1 2 3 4) menjadi (1 2 3 4) Pass Keempat (1 2 3 4) menjadi (1 2 3 4) (1 2 3 4) menjadi (1 2 3 4) (1 2 3 4) menjadi (1 2 3 4) Dari langkah pengurutan di atas, terlihat bahwa setiap kali melakukan satu pass, data terkecil akan bergeser ke arah awal sebanyak satu step. Dengan kata lain, untuk menggeser data terkecil dari urutan keempat menuju urutan pertama, dibutuhkan pass sebanyak tiga kali, ditambah satu kali pass untuk memverifikasi. Sehingga jumlah proses pada kondisi best case dapat dirumuskan sebagai berikut. Jumlah proses = n2+n (3) Dalam persamaan (3) di atas, n adalah jumlah elemen yang akan diurutkan. Sehingga notasi Big-O yang didapat adalah O(n2). Dengan kata lain, pada kondisi worst-case, algoritma Bubble Sort termasuk dalam kategori algoritma

kuadratik. Beberapa kelebihan dari algoritma Bubble Sort adalah sebagai berikut : Algoritma yang simpel. Mudah untuk diubah menjadi kode. Definisi terurut terdapat dengan jelas dalam algoritma. Cocok untuk pengurutan data dengan elemen kecil telah terurut. Quick sort

Terdapat 3 kemungkinan kasus dari performa algoritma quick sort ini yaitu terbaik (best case), terburuk (worst case), dan rata-rata (average case). Kasus Terbaik (Best Case) Kasus terbaik terjadi bila pivot adalah elemen median sedemikian sehingga kedua upa-tabel berukuran relative sama setiap kali pempartisian. Menentukan median tabel adalah persoalan tersendiri, sebab kita harus menentukan median dari tabel yang belum terurut. Pohon berikut menggambarkan upa-tabel kiri dan upatabel kanan setiap kali pempartisian sampai menghasilkan tabel terurut : Kompleksitas waktu pengurutan dihitung dari jumlah perbandingan elemen-elemen tabel : Tmin(n) = waktu partisi + waktu pemanggilan rekurens (Quick Sort untuk dua bagian tabel hasil partisi) Kompleksitas prosedur partisi adalah t(n) = cn = O(n), sehingga kompleksitas algoritma quick sort menjadi (dalam bentuk relasi rekurens) : T(n)={ a,n=1} {2T(n/2)+cn,n>1} Penyelesaian persamaan rekurens : T(n) = 2T(n/2) + cn = 2(2T(n/4) + cn/2) + cn = 4(T(n/4) + 2cn = 4(2(T(n/8) + cn/4) + 2cn = 8T(n/8) + 3cn = .. = 2k(T(n/2k) + kcn Persamaan terakhir dapat diselesaikan karena basis rekursif adalah ketika ukuran tabel = 1, n/2k = 1 _ k = 2 log n sehingga T(n) = nT(1) + cn 2 log n = na + c n 2log n = O(n 2log n) Worst case Kasus ini terjadi bila pada setiap partisi pivot selalu elemen masksimum (atau elemen minimum) tabel. Hal ini menyebabkan pembagian menghasilkan upatabel kiri (atau kanan) berukuran satu elemen dan upatabel kanan (atau kiri) berukuran n 1 elemen.
Kompleksitas waktu pengurutan : T(n)={a,n=1} {t(n-1)+cn,n>1}

T(n) = cn + T(n-1) = bn + { b.(n-1) + T(n-2) } = bn + b(n-1) + {b(n-2) + T(n-3)} =... = b(n+(n-1)+(n-2)..+2) +a =b{(n-1)(n+2)/2} + a = bn2/2 + bn/2 + ((a-b) = O(n2) Average case Kasus ini terjadi jika pivot dipilih secara acak dari elemen tabel, dan peluang setiap elemen dipilih menjadi pivot adalah sama. Kompleksitas waktunya adalah Tavg(n) = O(n 2log n). Pembuktiannya lebih rumit. Merge sort Dalam algoritma ini, jumlah perbandingan yang terjadi bergantung pada h dan m. Kondisi terburuk terjadi ketika perulangan berhenti, karena salah satu indeks, sebut saja i, telah mencapai titik berhentinya dimana indeks lain j telah mencapai m 1, lebih rendah 1 dari titik berhentinya. Sehingga, W(h,m) = h + m 1 Jumlah keseluruhan perbandingan adalah jumlah banyaknya perbandingan dalam pemanggilan rekursif merge sort dimana U sebagai input, banyaknya perbandingan dalam pemanggilan rekursif merge sort dimana V sebagai input, dan banyaknya perbandingan di top-level pemanggilan merge. Sehingga, W(n) = W(h) + W(m) + h + m 1 Pertama, kita menganalisa kasus diaman n adalah eksponen dari 2. Dalam kasus ini, Ekspresi untuk W(n) menjadi Ketika besar input adalah 1, kondisi pemberhentian terpenuhi dan tak ada penggabungan. Sehingga, W(1) adalah 0. Solusi dari rekurens tersebut adalah Merge Sort akan selalu membagi dua tiap sub-arraynya hingga mencapai basis, sehingga kompleksitas dari algoritma Merge Sort, berlaku untuk semua kasus (Worst Case = Best Case = Average Case). Heap sort