Реализации алгоритмов/Сортировка/Слиянием: различия между версиями

Содержимое удалено Содержимое добавлено
Добавлена реализация на Python
м Ссылки; избыточные <big /> и <font /> вокруг <source />; пробелы.
Строка 1:
{{wikipedia|Сортировка слиянием}}
== [[w:C++|C++]] ==
<big><source lang = "cpp">
 
/**
Строка 58:
}
 
</source></big>
 
Существует также итеративный алгоритм сортировки, избавленный от рекурсивных вызовов. Такой алгоритм называют «Восходящей сортировкой слиянием».
 
<big><source lang = "cpp">
 
// Слияние двух упорядоченных массивов
Строка 132:
}
}
</source></big>
***
Пример:
Строка 138:
mergeSort(a, 16);
Альтернативная версия алгоритма Сортировки Слиянием.
<big><source lang = "cpp">
template <typename Item>
void Merge(Item Mas[], int left, int right, int medium)
Строка 192:
}
 
</source></big>
 
==[[w:C_SharpC Sharp|C#]]==
<big><source lang="csharp">
static Int32[] Merge_Sort(Int32[] massive)
{
Строка 249:
System.Console.ReadLine();
}
</source></big>
 
==[[w:Perl|Perl]]==
<big><source lang="perl">
@out=(5,2,8,9,4,2,7,9,4,1,6,9,0);
sub sortM{
Строка 274:
}
sortM(\@out,0,$#out+1);
</source></big>
 
==[[w:Паскаль (язык программирования)|Паскаль]] (сортировка текстовых файлов)==
 
=== Сортировка простым слиянием ===
<big><source lang="pascal">
Procedure MergeSort(name: string; var f: text);
Var a1,a2,s,i,j,kol,tmp: integer;
Строка 391:
Erase(f2);
End;
</source></big>
 
=== Сортировка естественным слиянием ===
<big><source lang="pascal">
Procedure MergeSort(name: string; var f: text);
Var s1,s2,a1,a2,where,tmp: integer;
Строка 478:
Erase(f2);
End;
</source></big>
 
==[[w:Delphi (язык программирования)|Delphi]] (сортировка произвольных типов данных - простое слияние)==
<big><source lang="delphi">
unit uMergeSort;
 
Строка 564:
 
end.
</source></big>
 
== [[w:D (язык программирования)|D]] ==
<big><source lang = "d">
 
void mergeSort(int[] array) {
Строка 588:
}
}
</source></big>
 
== [[w:Python 2.7 (Функциональная реализация)|Python 2.7 (функциональная реализация)]] ==
<big><source lang = "python">
def merge(right, left, result):
result.append((left if left[0] < right[0] else right).pop(0))
Строка 598:
merge_sort = (lambda arr: arr if len(arr) == 1 else merge(merge_sort(arr[len(arr)/2:]),
merge_sort(arr[:len(arr)/2]), []))
</source></big>
***