Semua kompleksitas yang Anda berikan benar, namun mereka diberikan dalam notasi Big O , sehingga semua nilai aditif dan konstanta dihilangkan.
Untuk menjawab pertanyaan Anda, kami perlu fokus pada analisis terperinci dari kedua algoritma tersebut. Analisis ini dapat dilakukan dengan tangan, atau ditemukan di banyak buku. Saya akan menggunakan hasil dari Seni Pemrograman Komputer Knuth .
Jumlah perbandingan rata-rata:
- Sortir gelembung : 12( N2- NdiN- ( γ+ ln2 - 1 ) N) + O ( N--√)
- Jenis sisipan : 14( N2- N) + N- HN
- Sortir pilihan : ( N+ 1 ) HN- 2 N
Sekarang, jika Anda memplot fungsi-fungsi itu Anda mendapatkan sesuatu seperti ini:
Seperti yang bisa Anda lihat, bubble sort jauh lebih buruk karena jumlah elemen meningkat, meskipun kedua metode sortasi memiliki kompleksitas asimptotik yang sama.
Analisis ini didasarkan pada asumsi bahwa inputnya acak - yang mungkin tidak selalu benar. Namun, sebelum kita mulai menyortir, kita dapat secara acak mengubah urutan input (menggunakan metode apa pun) untuk mendapatkan kasus rata-rata.
Saya menghilangkan analisis kompleksitas waktu karena tergantung pada implementasi, tetapi metode serupa dapat digunakan.
Bartosz Przybylski
sumber
Fungsi itu sendiri, misalnya jumlah perbandingan dan / atau swap, mungkin berbeda untuk dua algoritma dengan biaya asimptotik yang sama, asalkan mereka tumbuh dengan tingkat yang sama.
Singkatnya, batas asimptotik memberi Anda perasaan yang baik tentang bagaimana biaya suatu algoritma tumbuh sehubungan dengan ukuran input, tetapi tidak mengatakan apa-apa tentang kinerja relatif dari berbagai algoritma dalam set yang sama.
sumber
Bubble sort menggunakan lebih banyak waktu swap, sementara sort sort menghindari ini.
Saat menggunakan memilih, sortirlah
n
paling banyak bertukar kali. tetapi ketika menggunakan semacam gelembung, itu bertukar hampirn*(n-1)
. Dan jelas waktu membaca kurang dari waktu menulis bahkan dalam memori. Waktu bandingkan dan waktu berjalan lainnya dapat diabaikan. Jadi waktu swap adalah hambatan utama dari masalah.sumber