Ookay,
1 for p := 1 to ⌊k/2⌋
Prostředky, jdeme do poloviny pole.
2 t := ap
3 ap := ak−p+1
4 ak−p+1 := t
Tento vzor může být rozpoznán jako „swapu dočasný t“. A co je vyměnil?
Tak, apa ak-p+1, z nichž jedním je ptého prvku od začátku pole , druhý ptého jednoho z konce .
Takže abych to shrnul :
Zaměňovat ntého nejprve s ntý poslední hodnotu pole až do poloviny pole. A potom? Pole je obrácen .
Všimněte si, že pseudocode-formát vypadá opravdu divné - a co je nejdůležitější - nejednoznačné.
Je ak-p+1rovnocenná a[k-p+1]nebo a[k]-p+1nebo a[k-p]+1? Pokud ne, jak jste se vyjádřil ty ostatní.
Takže nejdřív budu převést tento kód ke skutečnému zdroji, jako je Python, což je mnohem čitelnější.
Editovat .
I) No, jak jste psali, pole se pohybuje od a1do ak.
II) Přemýšlejte, jak byste mohli prohodit hodnoty dvou proměnných ( aa b):
1 temp := a
2 a := b
3 b := temp
Samozřejmě, protože jste přepsal ase bv řadě 2 , bylo nutné uložit starou ahodnotu dočasné, což je temp.