Ada algoritma pemilihan kasus terburuk yang terkenal untuk menemukan elemen terbesar k dalam array bilangan bulat. Ia menggunakan pendekatan median-of-median untuk menemukan pivot yang cukup baik, mempartisi array input di tempat dan kemudian secara rekursif melanjutkan pencariannya untuk elemen terbesar k '.
Bagaimana jika kita tidak diizinkan menyentuh array input, berapa banyak ruang tambahan yang dibutuhkan untuk menemukan elemen terbesar ke - dalam waktu O ( n ) ? Bisakah kita menemukan elemen terbesar k 'di O ( 1 ) ruang ekstra dan masih menjaga runtime O ( n ) ? Misalnya, menemukan elemen maksimum atau minimum membutuhkan O ( n ) waktu dan O ( 1 ) ruang.
Secara intuitif, saya tidak dapat membayangkan bahwa kita bisa melakukan yang lebih baik daripada ruang tetapi apakah ada buktinya?
Dapatkah seseorang menunjuk pada referensi atau mengemukakan argumen mengapa elemen 'memerlukan O ( n ) ruang untuk ditemukan dalam waktu O ( n ) ?
sumber
Jawaban:
Ini adalah masalah terbuka jika Anda dapat melakukan seleksi dengan waktu dan O ( 1 ) sel memori tambahan tanpa mengubah input (lihat di sini ). Tapi Anda bisa mendekati ini.O(n) O(1)
Btw, algoritma yang Anda cari, baru-baru ini dinamai algoritma constant-work-space .
Saya tidak mengetahui adanya batas bawah.
sumber