| Modul Lua ini digunakan pada sekitar 60.000 halaman dan perubahannya kemungkinan memicu perubahan massal pada semua halaman yang menggunakannya. Uji cobalah di subhalaman /bak pasir atau /kasus uji Modul:Exponential search, atau bak pasir modul Anda. Pertimbangkan untuk mendiskusikan perubahan di halaman pembicaraan sebelum mengimplementasikannya. |
Modul ini menyediakan algoritma pencarian eksponensial umum. Pencarian semacam ini dapat berguna ketika Anda ingin menemukan kunci dalam suatu array terurut, dan Anda ingin melakukannya dengan memeriksa elemen array sesedikit mungkin. Ini dapat mencakup situasi seperti:
- Menemukan nomor arsip tertinggi dalam sekumpulan arsip tanpa memeriksa apakah semuanya ada.
- Menemukan jumlah argumen posisional dalam frame.args tanpa harus memperluas teks wiki untuk masing-masing argumen.
Dokumentasi di atas ditransklusikan dari Modul:Exponential search/doc. (sunting | riwayat)
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
-- This module provides a generic exponential search algorithm. require[[strict]] localcheckType=require('libraryUtil').checkType localfloor=math.floor localfunctionmidPoint(lower,upper) returnfloor(lower+(upper-lower)/2) end localfunctionsearch(testFunc,i,lower,upper) iftestFunc(i)then ifi+1==upperthen returni end lower=i ifupperthen i=midPoint(lower,upper) else i=i*2 end returnsearch(testFunc,i,lower,upper) else upper=i i=midPoint(lower,upper) returnsearch(testFunc,i,lower,upper) end end returnfunction(testFunc,init) checkType('Exponential search',1,testFunc,'function') checkType('Exponential search',2,init,'number',true) ifinitand(init<1orinit~=floor(init)orinit==math.huge)then error(string.format( "nilai init tidak valid: '%s' terdeteksi dalam argumen #2 hingga ".. "'Exponential search' (nilai ''init'' harus bilangan bulat/integer positif)", tostring(init) ),2) end init=initor2 ifnottestFunc(1)then returnnil end returnsearch(testFunc,init,1,nil) end