Алгоритм: Сортировка слиянием двух упорядоченных массивов в один. С++ Visual Studio
Эта задача всегда возникает на третьем этапе «СОРТИРОВКИ СЛИЯНИЕМ»…
Поскольку главная функция программы работает только с упорядоченными массивами, то пришлось поместить процедуру проверяющую ввод пользователя. При вводе элемента массива нарушающего порядок «по возрастанию» запись в массив прерывается сообщением об ошибке и начинается заново.
О порядке хранения данных:
Есть два упорядоченных массива «А» и «В». Их размеры ограничены константами, а актуальный (текущий) размер указывается пользователем.
И есть результирующий массив «С» с размером равным сумме размеров «А» и «В». В него помещается результат слияния двух исходных массивов и, таким образом, получается отсортированный массив.
Вот пример: в цикле перебора в результирующий массив помещается наименьший из элементов исходных массивов, на которые в настоящий момент установлены их указатели…
/* новый массив будет отсортирован по возрастанию, если исходные массивы отсортированы.
цикл заканчивается в момент окончания одного из массивов */
for(ia=0,ib=0,ic=0;(ia< k1) && (ib < k2) ;ic++)
if(a[ia] < b[ib])
c[ic]=a[ia++];
else c[ic]=b[ib++];
//далее выполнится только один из циклов в котором счетчик не достиг конца
for(;ia < k1;ia++,ic++) c[ic]=a[ia];
for(;ib < k2;ib++,ic++) c[ic]=b[ib];
скачать exe-файл для тестирования
Удачи!
ДРУГИЕ ПРИМЕРЫ:
C# Visual Studio 2010 .NET Framework 4
Сортировка слиянием массива записей (структур)
Другие примеры на языках «C»,«C++»,«C#»
Поделиться в соц сетях: