Jednoduché Pseudokód Code Otázka

hlasů
0

Jsem na pseudokódu trochu nové. Chápu, co je kód říká, ale s těžko dávat věci dohromady. Jak bych měl na mysli, aby pochopili, co tento kód dělá:

Předpokládejme, že A1, A2,. , , , Ak je pole čísel k. Co Následující fragment kódu dělat? Stručně vysvětlit proč. Předpokládejme, že všechny odsazené linie patří uvnitř smyčky.

1 for p := 1 to ⌊k/2⌋
2     t := ap
3     ap := ak−p+1
4     ak−p+1 := t
Položena 29/08/2010 v 16:07
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
0

Smyčka odráží pole na své centrální prvek, jak to změní [P] s [K-p + 1], kde [P] je vždy na "levé" straně pole a [k-p + 1] je vždy na „správné“ straně. t je dočasné proměnné.

Odpovězeno 29/08/2010 v 16:13
zdroj uživatelem

hlasů
2

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.

Odpovězeno 29/08/2010 v 16:19
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more