| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- Program HeapSort;
- {�ã çâ®, ¤®¦¤ «¨áì ¢ë ¨ í⮩ ç¥à⮢®© ¯¨à ¬¨¤ «ì®© á®àâ¨à®¢ª¨
- Ÿ ¢á¥-â ª¨ ¢à㡨«áï ª ª â ¬ çâ®. Žª § «®áì ¥é¥ ¡®«¥¥ á«®¦® 祬 ª § «®áì
- ¢ ç «¥. Žá®¢ ï ¨¤¥ï:
- - „¥à¥¢ ¨ª ª®£® ¥â, ¨ ¥ ¡ë«®!
- - ‡ â® íâ ¤®«¡ ï ¯¨à ¬¨¤ á®é¥áâ¢ã¥â ¢ ⢮¥¬ ¬®§£ã
- ‘ ‘€ŒŽƒŽ �€—€‹€ ‚ �Ž‹�ŽŒ �€‡Œ…�…!
- - �ã ¨ ⨯ ¬ë á ¨¦¨å à冷¢ ¥¤¥¬ ¢ ¢¥àå, ª ¦¤®¬ è £¥
- ¯à®á¥¨¢ ï ⥪ã騩 í«-â ç¥à¥§ ¯¨à ¬¨¤ã (á¬. �. ‚¨àâ )
- - ’ ª¨¬ å८¬ ®â¥å ¢ á á¥à¥¤¨ë ¤® á ¬®£® ¢¥àå , â.¥. ¯à®á¥¨¢ ¢á¥ í«-âë
- ¬ë ¯®«ã稫¨ íâã ¤®«¡ ãî ¯¨à ¬¨¤ã, á ãá«®¢¨¥¬ çâ® ¤¢ ᨠ¢á¥£¤
- ¡®«ìè¥ ®âæ !
- - �®â®¬ - ᮢ¥à襮 ¤à㣮© íâ ¯: á ¬ á®àâ¨à®¢ª ¨ ¥áâì.
- 1) ’.ª. ¯¨à ¬¨¤ 㤮¢«¥â¢®àï¥â ãá«. (A[i] < A[2i]) AND (A[i] < A[2i+1])
- § ç¨â A[1] - á ¬ë© ¬ «¥ìª¨© í«¥¬¥â !
- 2) �ã ¬ë ¥£® ¨ ¯¨å ¥¬ ¢ ¯®á«¥¤¨© í«-â ¯¨à ¬¨¤ë, ¥£® - ¢ £®«®¢ã ¨
- ¯à®á¥¨¢ ¥¬. ’ ª¨¬ ®¡à §®¬ ¢¥àåã - ®¯ïâì á ¬ë© ¬ «¥ìª¨©.
- ˆ ¯à¨ í⮬ ã¬¥è ¥¬ ¤«¨ã 襩 ¯¨à ¬¨¤ë 1
- 3) �®ª è ¯¨à ¬¨¤ ¥é¥ ¥ ¯ãáâ ï ¯®¢â®à塞.
- 4) ’ ª¨¬ å८¬ - ã á ®¡à â® ®âá®àâ¨à®¢ ë© ¬ áᨢ. �㠢ᥠáà ¢¥¨ï
- - ®¡®à®â - ¢®â ⥡¥ ¨ ¯àï¬ ï á®àâ¨à®¢ª !
- PS. ¯®¯à®¡ãî íâ® ¢ ª®¤¥ ®âª®¬¬¥â¨à®¢ âì ;)
- }
- CONST
- ArLen = 10;
- TYPE
- Index = 1..ArLen;
- Item = word;
- VAR
- Pir : array [1..ArLen] of Item;
- Procedure Sift(L,R:word);{�«¨! Sift - ¯à®á¥¨¢ âì ¯® £«¨æª¨!}
- var
- i, j : Index;
- x : Item;
- {‚ í⮩ ¯à®æ¥¤ãà¥ á ¬®¥ ¢ ¦®¥ - L ¨ R, ®¨ ®â¢¥ç îâ ¥ ¯à®áâ® §¨ ¨¤¥ªáë,
- ¥é¥ £®¢®àïâ ® ⮬, ª ª ï ç áâì ¯¨à ¬¨¤ë ᥩç á ॠ«ì® à áᬠâਢ ¥âáï}
- begin
- i := L; {’®â, ª®â®àë© ¬¥ï¥¬}
- j := 2*i; {� ª®£® ¬®¦® ¬¥ïâì}
- x := Pir[L]; {Š®£® ¯à®á¥¨¢ ¥¬}
- if (j<R) AND (Pir[j] < Pir[J+1]) then Inc(j); {‚롥६ ¨¡®«ì襣® ¯®â®¬ª }
- while (j<=R) and (x < Pir[j]) do
- begin
- Pir[i] := Pir[j]; {Ž¡¬¥ï«¨, ¤®áâ â®ç® ¯à®áâ® § ¬¥¨âì ᥡï ᢮¥£® áë
- â.ª á ¬ - x ¨ ® ¨ªã¤ ¥ ¤¥¥âáï}
- i := j; {‘¯ãá⨫¨áì}
- j := 2*i;
- if (j<R) AND (Pir[j] < Pir[J+1]) then Inc(j); {‚롥६ ¨¡®«ì襣® ¯®â®¬ª }
- end;
- Pir[i] := x; {�ã ¢®â ¨ ¢¥à¥¬ x ¬¥áâ®}
- {Ÿ �… �Ž�ˆŒ€ž �Ž—…Œ“ �’މ ‘’�ŽŠˆ �…’ ‚ ‚ˆ�’… }
- end;{Sift}
- {-------------------------}
- VAR
- L,R : index;
- x : item;
- BEGIN
- Randomize;
- for l := 1 to ArLen do Pir[l] := Random(200);
- L := ArLen Div 2 + 1; {ˆ¤¥ï - ¨¦ïï ç áâì - ¥ âॡã¥â ¯à®á¥¢ª¨}
- R := ArLen;
- while L>1 do
- begin
- Dec(L);
- Sift(L,R);
- end;
-
- While R > 1 do
- begin
- x := Pir[R];
- Pir[R]:=Pir[1]; {ˆ¤¥ï ® ¢¯¨å¨¢ ¨¨ ¢¥à奣® ¢ ª®¥æ ¯¨à ¬¨¤ë}
- Pir[1] := x;
- Dec(R);
- Sift(L,R);
- end;
- for l := 1 to ArLen do WriteLn(Pir[l]);
- END.
|