Index: TECH/Algo/Sort/MergeSort.cls.xml =================================================================== diff -u -r424 -r425 --- TECH/Algo/Sort/MergeSort.cls.xml (.../MergeSort.cls.xml) (revision 424) +++ TECH/Algo/Sort/MergeSort.cls.xml (.../MergeSort.cls.xml) (revision 425) @@ -9,18 +9,25 @@ 1) { - Set Links = ##class(%ListOfDataTypes).%New() - Set Rechts = ##class(%ListOfDataTypes).%New() - #dim Midden As %Integer = TeSorteren.Count() \ 2 - For i=1:1:Midden Do Links.Insert(TeSorteren.GetAt(i)) - For i=Midden+1:1:TeSorteren.Count() Do Rechts.Insert(TeSorteren.GetAt(i)) + If (TeSorteren.Count() < 4) + { + Do ##class(TECH.Algo.Sort.InsertionSort).Sort(TeSorteren,Comparator) + } + Else + { + Set Links = ##class(%ListOfDataTypes).%New() + Set Rechts = ##class(%ListOfDataTypes).%New() + #dim Midden As %Integer = TeSorteren.Count() \ 2 + For i=1:1:Midden Do Links.Insert(TeSorteren.GetAt(i)) + For i=Midden+1:1:TeSorteren.Count() Do Rechts.Insert(TeSorteren.GetAt(i)) - Do ..Sort(Links,Comparator) - Do ..Sort(Rechts,Comparator) + Do ..Sort(Links,Comparator) + Do ..Sort(Rechts,Comparator) - Do TeSorteren.Clear() + Do TeSorteren.Clear() - Do ..Merge(TeSorteren, Links, Rechts, Comparator) + Do ..Merge(TeSorteren, Links, Rechts, Comparator) + } } Quit TeSorteren