Pertanyaan ini berkaitan dengan algoritma Fisher-Yates untuk mengembalikan acak acak array yang diberikan. The halaman Wikipedia mengatakan bahwa kompleksitas adalah O (n), tapi saya berpikir bahwa itu adalah O (n log n).
Di setiap iterasi i, integer acak dipilih antara 1 dan i. Cukup menulis integer dalam memori adalah O (log i), dan karena ada iterasi, totalnya adalah
O (log 1) + O (log 2) + ... + O (log n) = O (n log n)
yang tidak lebih baik adalah algoritma naif. Apakah saya melewatkan sesuatu di sini?
Catatan: Algoritma naif adalah untuk menetapkan setiap elemen nomor acak dalam interval (0,1), lalu mengurutkan array terkait dengan nomor yang ditugaskan.