In-place algoritmusIn-place algoritmus , někdy též in situ nebo na původním místě je algoritmus, který transformuje datové struktury za pomocí malého a především konstantního množství paměti. Předpokládá se, že veškeré zpracování dat proběhne v prostoru, kde jsou uložena vstupní data. paměťová náročnost je asymptoticky . Opak těchto algoritmů je not-in-place nebo také out-of-place algoritmus. PříkladMějme function reverse(a[0..n – 1]) allocate b[0..n – 1] for i from 0 to n – 1 b[n − 1 − i] := a[i] return b Tento algoritmus ale potřebuje O(n) pracovní paměti pro pole b o délce n. Proto to není in-place algoritmus. Úlohu lze ale řešit i jinak. Veškeré změny lze provádět přímo na vstupních datech. Zde konkrétně stačí jedna pomocná proměnná, která umožní vyměňovat čísla přímo v poli. function reverse_in_place(a[0..n-1]) for i from 0 to floor((n-2)/2) temp := a[i] a[i] := a[n − 1 − i] a[n − 1 − i] := temp Tento algoritmus už má jen konstantní požadavky na paměť bez ohledu na velikost vstupu. Jedná se tedy o in-place algoritmus. Řadící algoritmyJednou z nejčastějších aplikací in-place algoritmů jsou algoritmy řazení. Z používaných algoritmů jsou některé in-place a jiné ne.
|
Portal di Ensiklopedia Dunia