Saya selalu mendengar bahwa pencarian linier adalah pendekatan yang naif dan pencarian biner lebih baik daripada kinerjanya karena kompleksitas asimptotik yang lebih baik. Tapi saya tidak pernah mengerti mengapa ini lebih baik daripada pencarian linear ketika sortasi diperlukan sebelum pencarian biner?
Pencarian linear adalah O(n)
dan pencarian biner O(log n)
. Itu tampaknya menjadi dasar untuk mengatakan bahwa pencarian biner lebih baik. Tetapi pencarian biner membutuhkan pengurutan yang merupakan O(n log n)
algoritma terbaik. Jadi pencarian biner seharusnya tidak lebih cepat karena membutuhkan penyortiran.
Saya membaca CLRS di mana penulis menyiratkan bahwa dalam jenis penyisipan daripada menggunakan pendekatan pencarian linear naif, lebih baik menggunakan pencarian biner untuk menemukan tempat di mana item harus dimasukkan. Dalam hal ini ini tampaknya dibenarkan karena pada setiap iterasi loop ada daftar diurutkan di mana pencarian biner dapat diterapkan. Tetapi dalam kasus umum di mana tidak ada jaminan tentang set data yang kita butuhkan untuk mencari tidak menggunakan pencarian biner sebenarnya lebih buruk daripada pencarian linear karena persyaratan pengurutan?
Adakah pertimbangan praktis yang saya abaikan yang menjadikan pencarian biner lebih baik daripada pencarian linear? Atau apakah pencarian biner dianggap lebih baik daripada pencarian linear tanpa mempertimbangkan waktu perhitungan yang diperlukan untuk menyortir?