In-place algoritmus

In-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 O ( 1 ) {\displaystyle O(1)} .

Opak těchto algoritmů je not-in-place nebo také out-of-place algoritmus.

Příklad

Mějme a, n – prvkové pole čísel. Úkolem je zreorganizovat pole tak, aby obsahovalo prvky v opačném pořadí. Nabízející se metodou je vytvořit pomocné pole b, v němž se postupně vytvoří reorganizovaná verze vstupního pole. Ta je pak zkopírována do původního pole a .

 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í algoritmy

Jednou 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.

  • Bubblesort – Je in-place. K práci potřebuje konstantně tři proměnné.
  • Heapsort – Je in-place. K práci potřebuje konstantní množství paměti.
  • Quicksort – Není in-place. Ač se jedná o jeden z nejefektivnějších algoritmů, potřebuje v průměrném případě O(log(n)) místa paměti.

Externí odkazy


Zdroj datcs.wikipedia.org
Originálcs.wikipedia.org/wiki/In-place_algoritmus
Zobrazit sloupec 

Kalkulačka - Výpočet

Výpočet čisté mzdy

Důchodová kalkulačka

Přídavky na dítě

Příspěvek na bydlení

Rodičovský příspěvek

Životní minimum

Hypoteční kalkulačka

Povinné ručení

Banky a Bankomaty

Úrokové sazby, Hypotéky

Směnárny - Euro, Dolar

Práce - Volná místa

Úřad práce, Mzda, Platy

Dávky a příspěvky

Nemocenská, Porodné

Podpora v nezaměstnanosti

Důchody

Investice

Burza - ČEZ

Dluhopisy, Podílové fondy

Ekonomika - HDP, Mzdy

Kryptoměny - Bitcoin, Ethereum

Drahé kovy

Zlato, Investiční zlato, Stříbro

Ropa - PHM, Benzín, Nafta, Nafta v Evropě

Podnikání

Města a obce, PSČ

Katastr nemovitostí

Katastrální úřady

Ochranné známky

Občanský zákoník

Zákoník práce

Stavební zákon

Daně, formuláře

Další odkazy

Auto - Cena, Spolehlivost

Registr vozidel - Technický průkaz, eTechničák

Finanční katalog

Volby, Mapa webu

English version

Czech currency

Prague stock exchange


Ochrana dat, Cookies

 

Copyright © 2000 - 2024

Kurzy.cz, spol. s r.o., AliaWeb, spol. s r.o.