@@ -38,9 +38,150 @@ sort.Start();
3838External Multiway Merge Sort
3939----------------------------
4040
41- EMMS Core contains a Tape and Series classes:
4241
43- -
42+ _ ** Внешняя многопутевая естественная сортировка** _ отличается от _ ** обычной внешней сортировки** _ концепцией серий чисел.
43+ ** _ Серия_ ** - это последовательность чисел, каждый следующий элемент которой больше предыдущего.
44+
45+ Tape - последовательность чисел, описывает файл с числами.
46+ Количество Series в Tape не ограниченно. Первая серия предшествует второй, и т.д.
47+
48+ ```
49+ TAPE <= FILE 12 4 1 2 -6 12 645 12 54 -2,0001
50+ ```
51+
52+ | _ index_ | 0 | 1 | 2 | 3 | 4 | 5 |
53+ | ------------| --------| ------| --------| ---------------| ----------| -----------|
54+ | ** Series** | ` 12 ` | ` 4 ` | ` 1, 2 ` | ` -6, 12, 645 ` | ` 12, 54 ` | ` -2.0001 ` |
55+
56+
57+ Еще одно отличие ** _ ВМЕС_ ** от ** _ ОВС_ ** - это потоки или пути (от этого и слово многопутевая в названии).
58+
59+ Например, при ` N = 3 ` , создаются 6 (3 + 3) файлов, 2 набора для записи и для чтения.
60+
61+ | Read | Write |
62+ | ----------| ----------|
63+ | ` Tape 1 ` | ` Tape 4 ` |
64+ | ` Tape 2 ` | ` Tape 5 ` |
65+ | ` Tape 3 ` | ` Tape 6 ` |
66+
67+ Алгоритм состоит из:
68+
69+ 1 . ** Инициализации** . Подготовка к основному раунду алгоритма
70+ 2 . ** Тело** . Циклическое повторение основного раунда.
71+
72+ ** Основной раунд** - слияние N Серий из каждой Полосы в Полосы другой группы.
73+
74+ Задачу слияния N серий берет на себя Коллектор. Он создает новую серию, которая записывается в Tape
75+ ```
76+ _____
77+ \
78+ Series 1 \
79+ \
80+ Series 2 new Series
81+ /
82+ Series 3 /
83+ _____/
84+
85+ ```
86+
87+ 1 .
88+ | slot | Series |
89+ | -------| ----------|
90+ | [ _ ] | ` 12 ` |
91+ | [ _ ] | ` 4 ` |
92+ | [ _ ] | ` 1 ` , ` 2 ` |
93+
94+ 2 .
95+ | slot | Series |
96+ | --------| ------------|
97+ | [ 12 ] | ~~ 12~~ |
98+ | [ 4 ] | ~~ 4~~ |
99+ | [ 1 ] | ~~ 1~~ , ` 2 ` |
100+
101+ return ` 1 `
102+
103+ 3 .
104+
105+ | slot | Series |
106+ | --------| --------------|
107+ | [ 12 ] | ~~ 12~~ |
108+ | [ 4 ] | ~~ 4~~ |
109+ | [ 2 ] | ~~ 1~~ , ~~ 2~~ |
110+
111+ return ` 2 `
112+
113+ 4 .
114+
115+ | slot | Series |
116+ | --------| --------------|
117+ | [ 12 ] | ~~ 12~~ |
118+ | [ 4 ] | ~~ 4~~ |
119+ | [ _ ] | ~~ 1~~ , ~~ 2~~ |
120+
121+ return ` 4 `
122+
123+ 5 .
124+
125+ | slot | Series |
126+ | --------| --------------|
127+ | [ 12 ] | ~~ 12~~ |
128+ | [ _ ] | ~~ 4~~ |
129+ | [ _ ] | ~~ 1~~ , ~~ 2~~ |
130+
131+ return ` 12 `
132+
133+ 6 .
134+
135+ | slot | Series |
136+ | -------| --------------|
137+ | [ _ ] | ~~ 12~~ |
138+ | [ _ ] | ~~ 4~~ |
139+ | [ _ ] | ~~ 1~~ , ~~ 2~~ |
140+
141+ Серии закончились. Коллектор осталовился.
142+
143+ _____
144+
145+ ### Example
146+
147+ | _ index_ | 0 | 1 | 2 | 3 | 4 | 5 |
148+ | ------------| --------| ------| --------| ---------------| ----------| -----------|
149+ | ** Series** | ` 12 ` | ` 4 ` | ` 1, 2 ` | ` -6, 12, 645 ` | ` 12, 54 ` | ` -2.0001 ` |
150+
151+ 1 . Инициализация
152+
153+ | Read | Write |
154+ | ---------------------| --------|
155+ | ` 12 ` , ` -6, 12, 645 ` | ` ____ ` |
156+ | ` 4 ` , ` 12, 54 ` | ` ____ ` |
157+ | ` 1, 2 ` , ` -2.0001 ` | ` ____ ` |
158+
159+ 2 . Тело
160+
161+ 2.1.
162+
163+ | Read | Write |
164+ | -----------------------| ---------------|
165+ | ~~ 12~~ , ` -6, 12, 645 ` | ` 1, 2, 4, 12 ` |
166+ | ~~ 4~~ , ` 12, 54 ` | ` ____ ` |
167+ | ~~ 1, 2~~ , ` -2.0001 ` | ` ____ ` |
168+
169+ | Read | Write |
170+ | -------------------------| --------------------------------|
171+ | ~~ 12~~ , ~~ -6, 12, 645~~ | ` 1, 2, 4, 12 ` |
172+ | ~~ 4~~ , ~~ 12, 54~~ | ` -6, -2.0001, 12, 12, 54, 645 ` |
173+ | ~~ 1, 2~~ , ~~ -2.0001~~ | ` ____ ` |
174+
175+ 2.2.
176+
177+ | Read | Write |
178+ | ------------------------------------| ----------------------------------|
179+ | ` -6 -2,0001 1 2 4 12 12 12 54 645 ` | ~~ 1, 2, 4, 12~~ |
180+ | ` ____ ` | ~~ -6, -2.0001, 12, 12, 54, 645~~ |
181+ | ` ____ ` | ` ____ ` |
182+
183+
184+ Алгоритм завершаетс, в результате получась полоска с одной серией
44185
45186-----
46187
0 commit comments