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