Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Procedure SortBin (var Mass: Tabl; n: integer; var tmp1, tmp2: integer);
- Var i, j, left, right, middle: integer;
- tmp: DMY;
- Begin
- For i:= 2 to n do
- If Compare(Mass[i-1], Mass[i], tmp2) then
- Begin
- tmp:= Mass[i];
- left:= 1;
- right:= i - 1;
- Repeat
- middle:= (left + right) div 2;
- If Compare(tmp, Mass[middle], tmp2) then left:= middle + 1
- else right:= middle - 1;
- Until left > right;
- For j:= i - 1 downto left do Mass[j+1]:= Mass[j];
- Mass[left]:= tmp;
- tmp1:= tmp1 + 1
- End
- End;
- Procedure Merge(First, Second: Link; m, k: integer; var tmp1, tmp2: integer);
- Var tmp: Link;
- Begin
- While (m = 0) and (k = 0) do
- Begin
- If Compare(first^.dat, second^.dat, tmp2) and (k <> 0) then
- Begin
- tmp:= First;
- First:= Second;
- Second:= Second^.next;
- First^.next:= tmp;
- k:= k - 1;
- End
- Else
- If m <> 0 then
- Begin
- tmp:= First^.next;
- First^.next:= Second;
- Second:= Second^.next;
- First^.next:= tmp;
- m:= m - 1;
- End;
- tmp1:= tmp1 + 1; {Счётчик перестановок}
- End;
- End;
Advertisement
Add Comment
Please, Sign In to add comment