<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://discopal.ispras.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D1%81%D0%BB%D0%B8%D1%8F%D0%BD%D0%B8%D0%B5%D0%BC</id>
		<title>Сортировка слиянием - История изменений</title>
		<link rel="self" type="application/atom+xml" href="https://discopal.ispras.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D1%81%D0%BB%D0%B8%D1%8F%D0%BD%D0%B8%D0%B5%D0%BC"/>
		<link rel="alternate" type="text/html" href="https://discopal.ispras.ru/index.php?title=%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D1%81%D0%BB%D0%B8%D1%8F%D0%BD%D0%B8%D0%B5%D0%BC&amp;action=history"/>
		<updated>2026-04-26T10:02:18Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.26.4</generator>

	<entry>
		<id>https://discopal.ispras.ru/index.php?title=%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D1%81%D0%BB%D0%B8%D1%8F%D0%BD%D0%B8%D0%B5%D0%BC&amp;diff=1290&amp;oldid=prev</id>
		<title>WikiSysop: 1 версия</title>
		<link rel="alternate" type="text/html" href="https://discopal.ispras.ru/index.php?title=%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D1%81%D0%BB%D0%B8%D1%8F%D0%BD%D0%B8%D0%B5%D0%BC&amp;diff=1290&amp;oldid=prev"/>
				<updated>2008-10-23T16:48:21Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Алгоритм сортировки слиянием применяется для [[сортировка|сортировки]], если есть возможность использовать для хранения промежуточных результатов память, сравнимую с размером исходного массива.&lt;br /&gt;
&lt;br /&gt;
Слияние — это объединение двух или более упорядоченных&lt;br /&gt;
массивов в один упорядоченный. Пусть требуется упорядочить массив по убыванию. &lt;br /&gt;
Для этого сравниваются два наименьших элемента обоих массивов и наименьший&lt;br /&gt;
из них выводится как наименьший элемент суммарного массива, затем&lt;br /&gt;
процедура повторяется (см. процедуру «merge» в представленном ниже алгоритме).&lt;br /&gt;
Нетрудно видеть, что слияние двух упорядоченных последовательностей ''A'' и ''B''&lt;br /&gt;
длин ''|A|'' и ''|B|'' происходит за ''O(|A|+|B|)'' сравнений.&lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим алгоритм сортировки слиянием. Исходный массив ''A'' длины ''n'' делится пополам.  &lt;br /&gt;
Затем производится рекурсивная сортировка каждой половинки и их слияние. &lt;br /&gt;
Пусть ''T(n)'' — число сравнений, достаточное для сортировки слиянием, тогда будет справедливо&lt;br /&gt;
рекуррентное соотношение:&lt;br /&gt;
&amp;lt;m&amp;gt;&lt;br /&gt;
  T(n) \leq 2T(n/2)+O(n).&lt;br /&gt;
&amp;lt;/m&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
Решив это соотношение, получаем, что сложность алгоритма асимптотически оптимальна — алгоритм сортирует входной массив за время ''O(n log n)'' для любых входных данных. Однако алгоритм сортировки слиянием редко применяется на практике, т. к. в процессе своей работы алгоритм активно использует дополнительные массивы, что редко допустимо в реальных приложениях. &lt;br /&gt;
&amp;lt;code-python&amp;gt;&lt;br /&gt;
def mergesort(L):&lt;br /&gt;
    print funcname(),L&lt;br /&gt;
    if len(L) &amp;lt; 2: &lt;br /&gt;
        return L&lt;br /&gt;
    return merge(mergesort(L[:len(L)/2]),mergesort(L[len(L)/2:]))&lt;br /&gt;
&lt;br /&gt;
def merge(A,B):&lt;br /&gt;
    print funcname(),A,B,&lt;br /&gt;
    Out = []&lt;br /&gt;
    while len(A)+len(B) &amp;gt; 0:&lt;br /&gt;
        if len(B) == 0 or (len(A) &amp;gt; 0 and A[0] &amp;lt; B[0]):&lt;br /&gt;
            Out.append(A[0])&lt;br /&gt;
            A = A[1:]&lt;br /&gt;
        else:&lt;br /&gt;
            Out.append(B[0])&lt;br /&gt;
            B = B[1:]&lt;br /&gt;
    print &amp;quot; -&amp;gt; &amp;quot;, Out&lt;br /&gt;
    return Out&lt;br /&gt;
&amp;lt;/code-python&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Sorting:   [3, 4, 1, 5, 9, 2, 6, 5, 3, 5]&lt;br /&gt;
          mergesort: [3, 4, 1, 5, 9, 2, 6, 5, 3, 5]&lt;br /&gt;
          mergesort: [3, 4, 1, 5, 9]&lt;br /&gt;
          mergesort: [3, 4]&lt;br /&gt;
          mergesort: [3]&lt;br /&gt;
          mergesort: [4]&lt;br /&gt;
              merge: [3] [4]  -&amp;gt;  [3, 4]&lt;br /&gt;
          mergesort: [1, 5, 9]&lt;br /&gt;
          mergesort: [1]&lt;br /&gt;
          mergesort: [5, 9]&lt;br /&gt;
          mergesort: [5]&lt;br /&gt;
          mergesort: [9]&lt;br /&gt;
              merge: [5] [9]  -&amp;gt;  [5, 9]&lt;br /&gt;
              merge: [1] [5, 9]  -&amp;gt;  [1, 5, 9]&lt;br /&gt;
              merge: [3, 4] [1, 5, 9]  -&amp;gt;  [1, 3, 4, 5, 9]&lt;br /&gt;
          mergesort: [2, 6, 5, 3, 5]&lt;br /&gt;
          mergesort: [2, 6]&lt;br /&gt;
          mergesort: [2]&lt;br /&gt;
          mergesort: [6]&lt;br /&gt;
              merge: [2] [6]  -&amp;gt;  [2, 6]&lt;br /&gt;
          mergesort: [5, 3, 5]&lt;br /&gt;
          mergesort: [5]&lt;br /&gt;
          mergesort: [3, 5]&lt;br /&gt;
          mergesort: [3]&lt;br /&gt;
          mergesort: [5]&lt;br /&gt;
              merge: [3] [5]  -&amp;gt;  [3, 5]&lt;br /&gt;
              merge: [5] [3, 5]  -&amp;gt;  [3, 5, 5]&lt;br /&gt;
              merge: [2, 6] [3, 5, 5]  -&amp;gt;  [2, 3, 5, 5, 6]&lt;br /&gt;
              merge: [1, 3, 4, 5, 9] [2, 3, 5, 5, 6]  -&amp;gt;  [1, 2, 3, 3, 4, 5, 5, 5, 6, 9]&lt;br /&gt;
 Sorted:    [1, 2, 3, 3, 4, 5, 5, 5, 6, 9]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Алгоритмы]]&lt;br /&gt;
{{replicate-from-custiswiki-to-lib}}&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	</feed>