Saya baru saja membaca tentang cyclesort melalui posting blog sortvis.org. Ini mungkin yang paling tidak jelas yang pernah saya dengar sejauh ini, karena menggunakan matematika yang saya tidak kenal (mendeteksi siklus permutasi dari set integer).
Apa yang paling tidak jelas yang Anda tahu?
algorithms
sorting
sova
sumber
sumber
Jawaban:
Pernah mendengar tentang Penyortiran Kesabaran ? Nah sekarang kamu sudah ...
sumber
Slowsort bekerja dengan melipatgandakan dan menyerah (bukan untuk membagi dan menaklukkan). Ini menarik karena terbukti merupakan algoritma penyortiran yang paling tidak efisien yang dapat dibangun (asimptotik, dan dengan pembatasan bahwa algoritma semacam itu, walaupun lambat, harus tetap sepanjang waktu bekerja menuju hasil).
Ini mengimbanginya dari bogosort karena dalam kasus terbaik, bogosort cukup efisien - yaitu, ketika array sudah diurutkan. Slowsort tidak “menderita” dari perilaku terbaiknya. Bahkan dalam kasus terbaiknya, ia masih memiliki runtime untuk ϵ > 0.
Ini kodesemu, diadaptasi dari artikel Wikipedia bahasa Jerman :
sumber
Saya tidak tahu apakah ini dianggap tidak jelas, tetapi salah satu "algoritma" pengurutan yang paling konyol adalah Bogosort . Tautan dari halaman Bogosort juga menyenangkan.
Dan ada permata ini dari bagian "quantum bogo-sort".
Hmmm ... bisa dibilang :-).
sumber
"Algoritma" tidak jelas lainnya adalah Intelligent Design Sort - tetapi tidak ada algoritma yang lebih cepat atau memiliki konsumsi memori lebih sedikit :)
sumber
Sleep Sort agak baru.
sumber
Saya pikir semacam gelembung akan menjadi jawaban yang salah dalam situasi ini juga
:)
sumber
Knuth Volume 3 1 , dalam jawaban untuk salah satu latihan, memberikan implementasi algoritma pengurutan tanpa nama yang pada dasarnya adalah kode golf kuno - jenis terpendek yang dapat Anda tulis dalam bahasa assembly MIX. Kode singkat tidak datang pada harga oh-so-minor kompleksitas O (N 3 ) meskipun ...
1 Setidaknya dalam edisi yang lebih lama. Mengingat modifikasi untuk MIXAL untuk edisi baru, saya tidak yakin apakah itu masih ada, atau bahkan membuat sedikit sangat masuk akal lakukan di MIXAL asli.
sumber
Untuk kelas struktur data saya, saya harus (secara eksplisit) membuktikan kebenaran jenis Stooge . Ini memiliki waktu berjalan O (n ^ {log 3 / log 1.5}) = O (n ^ 2.7095 ...).
sumber
Saya tidak tahu apakah itu yang paling tidak jelas, tetapi spageti adalah salah satu yang terbaik dalam situasi di mana Anda dapat menggunakannya.
sumber
Salah satu buku Knuth asli, "Sorting and Searching", memiliki lipatan tengah yang menggambarkan proses yang mengurutkan file tape tanpa menggunakan hard disk. Saya pikir itu menggunakan enam tape drive, dan secara eksplisit menunjukkan ketika masing-masing dibaca maju, membaca mundur, memutar balik, atau menganggur. Hari ini adalah monumen untuk teknologi yang usang.
sumber
Saya pernah melakukan semacam gelembung register vektor dalam assembler CRAY. Mesin memiliki instruksi shift ganda, yang memungkinkan Anda untuk menggeser isi register vektor naik / turun dengan satu kata. Letakkan setiap titik lainnya dalam dua register vektor, maka Anda bisa melakukan semacam gelembung penuh tanpa harus membuat referensi memori lain sampai Anda selesai. Kecuali untuk sifat bubble ** N ** 2 itu efisien.
Saya juga pernah perlu melakukan semacam floating point dari vektor panjang 4 secepat mungkin untuk satu jenis. Melakukannya dengan pencarian tabel (bit tanda A2-A1 adalah satu bit, tanda A3-A1 membentuk bit lain ..., lalu Anda mencari vektor permutasi dalam sebuah tabel. Itu sebenarnya solusi tercepat yang bisa saya buat dengan. Tidak bekerja dengan baik pada arsitektur modern, unit mengambang dan bilangan bulat terlalu terpisah.
sumber
Google Code Jam memiliki masalah tentang algoritme yang disebut Gorosort, yang saya pikir mereka temukan untuk masalahnya.
http://code.google.com/codejam/contest/dashboard?c=975485#s=p3
sumber
Jangan ingat namanya, tapi itu pada dasarnya
sumber
Semacam shell
Mungkin algoritme itu sendiri tidak begitu jelas, tetapi siapa yang dapat menyebutkan implementasi yang sebenarnya digunakan dalam praktik? Saya bisa!
TIGCC (kompiler berbasis GCC untuk kalkulator grafik TI-89/92 / V200) menggunakan Shell sort untuk
qsort
implementasi di pustaka standarnya:Shell sort dipilih untuk quicksort agar ukuran kode tetap rendah. Meskipun kompleksitas asimptotiknya lebih buruk, TI-89 tidak memiliki banyak RAM (190K, minus ukuran program dan ukuran total dari setiap variabel yang tidak diarsipkan), jadi agak aman untuk mengasumsikan bahwa jumlah item akan rendah.
Implementasi yang lebih cepat ditulis setelah saya mengeluh karena terlalu lambat dalam program yang saya tulis. Ia menggunakan ukuran celah yang lebih baik, bersama dengan optimisasi perakitan. Itu dapat ditemukan di sini: qsort.c
sumber