JENIS MENU SORTING DAN PENGAPLIKASIANNYA

 1.Bubble Sort

Bubble sort merupakan salah satu metode pengurutan yang dimana didalam algoritma akan mengurutkan nilai yang terkecil kesebelah kiri dan yang terbesar kesebelah kanan. Prosesnya akan berlangsung dengan cara membandingkan angka pertama disebelah kiri dengan angka disbelahnya kananny(angka kedua) lalu akan memindahkan nilai yang kecil kekiri dan yang besar kekanan. Langkah kedua dan seterusnya akan sana seperti itu sampai angka tersebut terurut dari kecil sampai terbesar.


Pada gambar di atas terdapat tinggi rata-rata anak Informatika yang saya list dalam variabel "tinggi_badan_anak_it", tetapi dalam list tersebut belum tersusun rapi dan masi teracak. Nah dalam  program ini  saya menggunakan "bubblesort" yang nantinya aka menerima fungsi untuk mengurutkan bilangan yang ada dalam list tadi.

Di dalam "bubblesort" terdapat dua perluangan yang saya gunakan yaitu "for". Pertama saya menggunakan "(for i in range (len(data) -1,0,-1):)" yang nantinya akan membalikkan nilai yang ada dalam list. Kedua perulangan "(for j in range (0, len(data) -1): )" yang nantinya akan menjalakan dua angka yang besrdekatan.

Terdapat juga perulangan percabangan " if " yang nantinya akan membandingkan dua elemen yang berdekatan. Jika elemen atau angka pertama (sebelah kiri) lebih besar dari elemen sebelah kanan maka elemen pertama akan bertukar tempat denegan elemen kedua.

Setiap proses di atas akan terus berulang sampai tidak ada lagi yang elemen yang bisa ditukarkan atau dalam kata lain setiap angka atau nilai sudah terurut dari yang terkecil.

2.Selection Sort

Selection adalah algoritma perbandingan dengan membandingkan keseluruhan data, dengan kata lain dalam selection sort lebih mudah karena ia membandingkan langsung secara keselurhan, seperti contoh kita ingin ingin mencari nilai pertama terkecil maka program yang kita buat akan membandingkan seluruh list dan kemudian ketika menemukan nilai yang terkecil selain nilai pertama , maka nilai pertama akan bertukar dengan nilai yang yang terkecil. Jika tidak ditemukan nilai yang terkecil selain nilai pertama maka tidak akan ditukar.



Dalam parameter diatas terdapat  variabel  "tinggi_badan_anak_it" yang merupakan berisi list tinggi badan anak anak it.

Sama seperti sebelumnya terdapat perulangan yang saya gunakan yaitu  ("for i in range (len(data) -1,0,-1):") dimana dalam perulangan ini iterasi ini akan mengulang sebanyak panjang list dikurang -1. Setelah itu diawal setiapiterasi atau angak awal yag ingin kita bandingkan kita jadikan variabel "terendah = 0" yang artinya  indeks "0" menjadikan nilai pertama.

Kemudian terdapat juga perulangan kedua yaitu " for j in range (1, i+1): " dimana dalam perulangan ini akan mencari nilai terkecil dalam list dengan membandingkan angka bagian kanan dan kiri " 1+1".
Dalam perulanngan ini kita membandingkan tinggi badan anak pada indeks " j " dengan tinggi badan anak pada indeks " terendah " . Jika tinggi badan anak pada " j" lebih besar, maka nilai " terendah" dengan "j" adalah adalah benar.

3.Insrtion Sort

Insretion sort adalah salah satu algoritma pengurutan dimana algoritma akan bekerja dengan membandingkan setiap nilai dan mengurutkankannya. Cara kerja algoritma ini adalah membandingkan satu persatu nilai sehingga ketika nilai tersebut sudah berada ditempat yang benar, nilai tersebut tidak akan dibandingkan lagi melainkan nilai tersebut lebih kecil atau lebih besar (sesuai program yang dibuat) maka nilai sudah dibandingkan hanya bertukar tempat dan tidak akan melakukan perbandingan lagi.


Dalam algoritma ini saya menggunakan "tinggi_badan_anak_it" sebagai variabel list dan "insertionsort" yang nantinya akan menerima fungsi untuk mengurutkan bilangan. Dalam program terdapat beberapa perulangan yang dimulai dengan " for i in range (1, len(tinggi_badan_anak_it)) : " , perulangan ini dimulai dari nilai yang kedua  (indeks 1) hingga akhir list (kanan). 

Kemudin saya menggunakan " data = tinggi_badan_anak_it[i] " dimana dalam fungsi untuk menyimpan list tinggi badan anak ke dalam variabel [i].

Setelah itu " j = i -1 " dan " while j >= 0 and data < tinggi_badan_anak_it[j]: " ini berfungsi untuk mencari posisi yang benar  dari elemen  "data" dari bagian yang sudah diurutkan dalam list. Selama nilai "data: lebih kecil dari elemen yang sedangkan dibandinngkan , dilakukan pergeseran  elemen ke posisi yang brikutnya.

" tinggi_badan_anak_it[ j + 1 ] = tinggi_badan_anak_it[ j ]" dan "j - = 1" berfungsi untuk memindahkan elemen yang lebih besar  ke posisi berikutnya dan memberikan ruang bagi elemen "data" berikutnya. Kemudian " tinggi_badan_anak_it [ j + 1] = data" untuk menemukan poisi yang benar dari elemen "data" dan ditempatkan di posisi tersebut.

4.Marge Sort

Marge sort adalah algoritma pengurutan yang menggunakan metode divine and conquer dimana dalam metode ini, setiap nilai yang berada dalam list akan dikelompokkan menjadi dua bagian dan peroses ini akan terus berlangsung sampai setiap nilai dalam list tidak bisa dibagi atau dikelompokkan lagi, dengan kata lain sudah sesuai dan terurut.


Dalam proses pengurutan dengan menggunakan marge sort kali ini sedikit berbeda dari metode yang sebelumnya, dimana dalam proses kali ini kita akan menentukan tengah dari panjang list dengan menggunakan variabel " mid " dan kemudian nilai dalam list tersebut akan dibagi menjadi dua kelompok yaitu dengan varibel "low" bagian kiri dan "high" bagian kanan. Varibel tersebut saya gunakan sekalian sebagain penentu pengurutan dimana kiri untuk nilai rendah dan kanan untuk nilai yang tinggi.

Kemudian pada bagian '" i = j = k = 0 " digunakan untuk menggabunngkan kembali niali atau elemen yang sudah diurutkan, dimana didalamnya terdapat beberapa pengulangan.

Setelah terurut, jika terdapat nilai yang lebih dari list yang sudah terbagi maka kita harus menggabungkannya kembali,jadi saya menggunakan perintah perulangan " while i < len(low): " untuk nilai rendah bagian kiri dan " while j < len (high):" untuk tinggi bagian kanan. 

5.Quick Sort

Quick sort sama seperti marge sort karena menggunakan metode divine and conquer dimana meotode ini memisahkan list dengan mencari nilai tengah.Setelah itu akan dilakukan pemisahan lagi dengan memisahkan nilai terkecil sebelah kiri dan terbesar disebelah kanan, kemudian jika sudah terurut maka akan digabungkan kembali. Porse ini akan berlaku secara terus menerus sampailah nilai terkecil dan terbesar tidak bisa dibandingkan lagi karena sudah berada di posisi yang benar.


Seperti biasa, disini kita mencari urutan tinggi anak IT. Saya menggunakan "quick_sort" untuk nantinya memanggil fungsi untuk mengutukan nilai dalam list. Dalam pengurutan kali ini saya menggunakan perulangan " if data <= 1: " jika panjang list kurang dari satu atau nilainya sma dengan , maka list tersebut dianggap sudah terurut dan akan dikembalikan tanpa harus diurutkan lagi

Setelah sebuah nilai akan diambil menjadi pivot atau nilai tengah dengan menggunakan perulangan " for i in tinggi_badan_anak_it " yang kemudian didalamnya akan membandungkan nilai rendah dan nilai tinggi (kiri dan kanan ) untuk mencari nilai tengah atau sama dengan "sedang". Selanjutnya dilakuakn pemisahan nilai rendah bagian kiri " rendah.append(i) " dan nilai tertingi di bagian kanan "tinggi.append(i).

Seterusnya dilakukan penggabungan  dari fungsi "quick_sort" dengan memanggil funsinya sediri dari nilai yang sudah dibagi.  .Kemudain dilakukan penggabungan kembali dari nilai terkecil dan nilai terbesar kedalam nilai tengah atau pivot "return hasil".

Komentar

Postingan Populer