MergeSort
Třídění slučováním
Tento algoritmus rozdělí pole na dvě přibližně stejně velké části.Pote s každou z těchto částí učiní totéž-rozdelí na dvě...dokud nedostaneme jednoprvkové ůseky. Jednopoložkové ůseky jsou vždy utříděné, takže ted bereme utříděné ůseky a slučujeme tak, aby byly zase utříděné...Končíme až když uspořádáme celé pole .
|
3
|
5
|
2
|
1
|
4
|
10
|
8
|
6
|
|
3
|
-
|
5
|
-
|
2
|
-
|
1
|
-
|
4
|
-
|
10
|
-
|
8
|
-
|
6
|
|
3
|
5
|
-
|
1
|
2
|
-
|
4
|
10
|
-
|
6
|
8
|
|
1
|
2
|
3
|
5
|
-
|
4
|
6
|
8
|
10
|
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
|
Takto vypadá Mergesort v Delphi
var
procedure Merge(l,q,r : integer); var i,j,k : integer; begin i := l; for k := l to r do begin else end; for i := l to r do end;
procedure MSort(l,r : integer); var begin begin end;
procedure MergeSort(var Pole : TPoleCisel); begin PPole := @Pole; end;
|