ВУЗ:
Составители:
Рубрика:
Ниже
приведена
функция
на
языке
С++,
реализующая
алгоритм
сортировки
методом
слияний.
Для
того
чтобы
упорядочить
массив
theArray,
состоящий
из
n-l
элементов,
выполняется
рекурсивный
вызов
mergesort
(theArray,
О,
n-l).
const
int
М'А):
SlZE
=
JW(IК(~li.Л1(IJlыt()t:!-/{·()Jllл-че(~гrl()()-.ЭJlе.Л1е11111()(~-)W(I(~С~ll(j(J;
void
meT"cRe([)alaT))!Je
tI7e..:·4r""Cf))/·
..
/,
int
.fir,st,
i"t
тл
а,
int
last)
,//
Обьединяет
два
упорядоченных
отрезка
Ille!Jl·~J'{J)iflтos't
..
111i(i]
и
/>'
thеАr,.а~У[Jпid·+-1
..
Та.«]
в
один
упорядоченный
массив.
//
Предусловие:
jirst
~<~
==
111iJ
<~::::::.
Так:
Оба
подмассива
/1
,1'1e./1rra.\;'[/i,4.\,t
..
пиа]
и
the./4J,,"clJJ[nlid+·j
.lаs~1.')fl0!)ядочеНbl
>
//
по
возрастанию.
1/
Постусловие:
отрезок
t-}1е~'1гrа.1)[first.
./(15;1]
упорядочен.
//
Замечание
о
реализации:
функция
выполинет
слияние
дв}'х
//
подмассивов
во
временный
массие.
а
](l1}и!.1-1
копирует
его
//
содержимое
в
исходны
й
..
массив
fJ1е/lгr{~1/.
1/----------------------------------------------------
----------------------------------------------------
f
i
//
Инициализируем
локальные
индексы,
выделяя
подмассивы
;nt./iгstl
::::::.firs/,
-
//
Начало
первого
подмассива
йи
Та
.
.\:tl
111id,'
inl./iгst1
-=
пиа
» 1:
/:>'
Н{lчаJZО
в/110!)О(?О
подмассива
int
!ClstJ
=:
10s/,'
//
Конец
второго
подмассива
/~/
Пока
оба
подмассива
не
пусты.
копирус.
н
.
меньшии
элемент
/гео
временный
массив
inl
таех
-==
.
.111;0.\"11;
Следующая
свободная
ячейка
//
массива
teml).l41Itr(~."
for
(;
(fil">c\'/
1
<~==
[ая!
1)
&&
(jiгst2
<:=:~
/(lsI2): ++'inc!ex)
I
l
//
Инвариант:
0I11jJC301\'
tеnl/JА,·га)'[fi,"stl..
[паех-Г]
//
упорядочен.
ij(theL'117
4
{,
IJ'l firslZ}
.<
111е~/lгrа.);ifiГSI2])
t·enlf)·~41·,·4c'.y/i}1(fe.x~.1
the
..
41"/"l.1)/{fiT".\<t 1
..
1:
.+
"+~fi
У.\'
t 1:
1
I
el
..
ке
(
l
temp.A
r
пау
/}
паех]
=
'11е
~4
ккау
Ifi1·5't
~.I,.
..
+-.
'+:/1
rs
t2,'
}
//
Конец
оператора
ff)
/!
Конец
оператораюп
Скопировать
подмассив.
оставшиися
непустым
//
Скопировать
первыи
подмассив.
если
необходимо
27
Страницы
- « первая
- ‹ предыдущая
- …
- 26
- 27
- 28
- 29
- 30
- …
- следующая ›
- последняя »