такая проблема, есть программа, которая реализуется сортировку методом двухпутевого слияния, нужно при помощи библиотеки mpich реализовать данный алгоритм параллельно.
#include <stdio.h>
#include <stdlib.h>
// Функция сортировки двухпутевым слиянием
void merge(int *a, int n)
{
int mid = n / 2; // находим середину сортируемой последовательности
if (n % 2 == 1)
mid++;
int h = 1; // шаг
// выделяем память под формируемую последовательность
int *c = (int*)malloc(n * sizeof(int));
int step;
while (h < n)
{
step = h;
int i = 0; // индекс первого пути
int j = mid; // индекс второго пути
int k = 0; // индекс элемента в результирующей последовательности
while (step <= mid)
{
while ((i < step) && (j < n) && (j < (mid + step)))
{ // пока не дошли до конца пути
// заполняем следующий элемент формируемой последовательности
// меньшим из двух просматриваемых
if (a[i] < a[j])
{
c[k] = a[i];
i++; k++;
}
else {
c[k] = a[j];
j++; k++;
}
}
while (i < step)
{ // переписываем оставшиеся элементы первого пути (если второй кончился раньше)
c[k] = a[i];
i++; k++;
}
while ((j < (mid + step)) && (j<n))
{ // переписываем оставшиеся элементы второго пути (если первый кончился раньше)
c[k] = a[j];
j++; k++;
}
step = step + h; // переходим к следующему этапу
}
h = h * 2;
// Переносим упорядоченную последовательность (промежуточный вариант) в исходный массив
for (i = 0; i<n; i++)
a[i] = c[i];
}
}
int main()
{
int a[8];
// Заполнение массива случайными числами
for (int i = 0; i<8; i++)
a[i] = rand() % 20 - 10;
// Вывод элементов массива до сортировки
for (int i = 0; i<8; i++)
printf("%d ", a[i]);
printf("\n");
merge(a, 8); // вызов функции сортировки
// Вывод элементов массива после сортировки
for (int i = 0; i<8; i++)
printf("%d ", a[i]);
printf("\n");
getchar();
return 0;
}
Я не понимаю и не знаю, как это сделать, в интернете подобной информации найти не выходит=( Спасибо за внимание.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как можно организовать передачу указателя в поле класса так, чтобы в дальнейшем можно было его использовать для модификации переданного...
Когда я нажимаю на кнопку считает, а в файл нечего не записывается искал много способов записи в файл, ругался на все кроме этогоcli c++
Всем привет! Подскажите нужно создать матрицу такого вида: 4 - размер матрицы;
Как из массива данных типа char вывести случайные пары элементов, чтобы те не повторялись? Уже сделал работающую программу для вывода этих...