Here's one way: You basically re-write your sort function to take a list of sort functions, each sort function compares the attributes you want to test, on each sort test, you look and see if the cmp function returns a non-zero return if so break and send the return value. You call it by calling a Lambda of a function of a list of Lambdas. Its advantage is that it does single pass through the data not a sort of a previous sort as other methods do. Another thing is that it sorts in place, whereas sorted seems to make a copy. I used it to write a rank function, that ranks a list of classes where each object is in a group and has a score function, but you can add any list of attributes. Note the un-lambda-like, though hackish use of a lambda to call a setter. The rank part won't work for an array of lists, but the sort will. Kembali lagi ke FunCode anbies, disini kita akan membahas macam - macam algoritma sorting atau pengurutan menggunakan bahasa Python. Pengurutan (sorting) adalah yang sangat penting saat memanipulasi data. Ketika kita mengurutkan data, data akan terlihat rapi dan mudah dibaca. Sehingga memudahkan juga dalam menganalisa. Kenapa kita perlu algoritma untuk mengurutkan sesuatu? Saat pengurutan data dilakukan, program akan mengkalkulasi dan membandingkan setiap data agar dapat menemukan mana yang terbesar dan terkecil. Oke, mungkin jika datanya cuman “ratusan” atau “ribuan” mungkin komputer kita masih bisa menanganinya. Tapi bagaimana jika datanya sampai jutaan atau miliaran seperti yang dilakukan Google? Bisa kalian bayangkan kan? Maka dari itu pemilihan algoritma untuk pengurutan (sorting) juga mempengaruhi cepat atau lambatnya sistem dalam memanipulasi data. Hahaha 😄 santai aja anbi disini bakal bahas algoritma sorting yang sederhana aja kok. Enggak yang sampai setara punya Google. Oke kita mulai aja. Bubble SortBubble Sort adalah algoritma sorting yang paling populer dan sederhana diantara algoritma lainnya. Proses pengurutan pada algoritma ini dengan membandingkan masing - masing elemen secara berpasangan lalu menukarnya dalam kondisi tertentu. Proses ini akan terus diulang sampai elemen terakhir atau sampai tidak ada lagi elemen yang dapat ditukar. Inilah kenapa algoritma ini diberi nama “Bubble”, dimana gelembung yang terbesar akan naik ke atas.
Outputnya seperti ini :
Apa yang terjadi pada kode diatas? Ini penjelasannya. Alur Kode :
Kurang lebih gambarannya akan seperti ini : Bubble SortLalu, untuk mengurutkan secara descending (dari terbesar ke terkecil) bagaimana? Mudah, tinggal kita ubah saja perbandingannya ( 0).
Dari yang tadinya elemen besar di tukar elemen kecil, sekarang elemen kecil ditukar elemen yang besar. Simple AF 😄. Selection SortSelection Sort adalah algoritma sorting yang mengurutkan data dengan cara mencari elemen paling kecil dari list, lalu menukar elemen tersebut ke urutan paling awal. Dalam algoritma ini memiliki konsep yang sama dengan bubble sort, yaitu membandingkan dan menukar. Tetapi, dalam selection sort ia akan mencari 2 dengan elemen paling kecil, ketika sudah ketemu, elemen pada 2 itu akan ditukar dengan elemen pada 2 pertama.Begitu seterusnya sampai perulangan selesai atau tidak ada lagi elemen yang bisa ditukar.
Lalu, outputnya seperti ini :
Apa yang terjadi pada kode diatas? Penjelasannya Alur Kode :
Kurang lebih gambarannya akan seperti ini : Selection SortLalu bagaimana untuk descending order menggunakan Selection Sort? Sama seperti sebelumnya, kita tinggal ubah pembandingnya ( 0). 1 2Insertion SortInsertion Sort adalah algoritma yang melakukan pengurutan dengan membandingkan elemen satu dengan elemen lainnya dalam sebuah list. Elemen yang dibandingkan akan ditempatkan ke posisi yang sesuai (urut) pada list. Analoginya seperti mengurutkan kumpulan kartu. Setiap kartu yang kalian ambil, kalian bandingkan terlebih dahulu ke kumpulan kartu yang sudah diurutkan. Dan ketika tahu urutan ke berapa, kalian selipkan kartu itu ke tumpukan kartu agar urut. 3 4Outputnya akan seperti ini : 5Apa yang terjadi pada kode diatas? berikut penjelasannya. Alur Kode
Kurang lebih gambarannya seperti ini. Insertion SortLalu untuk descending order menggunakan Insertion Sort, kita tinggal ubah pembanding pada saat 7. 7Outputnya akan seperti ini : 8. . .Ketiga sorting diatas adalah ketiga sorting paling sederhana. Penerapannya pun menggunakan python cukup singkat. Menurut kalian, dari ketiga sorting diatas, mana yang paling cepat proses sortingnya? Untuk full codenya kalian bisa kalian di github AnbiDev. 🐙 https://github.com/AnbiDev/anbi-funcode/tree/master/sorting-case Oke, mungkin sekian dulu untuk algoritma sorting menggunakan python. Nanti anbi akan buat Part 2 untuk lebih mendalami algoritma dalam python. |