Найти максимальный элемент массива, используя метод деления пополам - C (СИ)
Формулировка задачи:
Есть задача.Найти максимальный элемент массива используя метод деления пополам вида max(a1...an)=max(max(a1...an/2),max(an/2+1....an))Написал код,не вижу ошибки
#include <stdio.h>
#include <stdlib.h>
void funk(int *num,int size)
{
int i;
for(i=0;i<size - 1;i++)
{
int j;
for (j = (size - 1);j>i;j--)
{
if (num[j-1]>num[j])
{
int temp= num[j-1];
num[j-1]=num[j];
num[j]=temp;
}
}
}
}
double maxr(double *a,double *b)
{int c=a[0];
int d=b[0];
int kmax;
int i,n;
for (i=0;i<n;i++)
{
if (a[i]>c)
{
c=a[i];
}}
for (i=0;i<n;i++)
{
if (b[i]>c)
{
d=b[i];
}
} if (c>d)
return kmax=c;
else
return kmax=d;
}
double imax(double *a,int n)
{ double lmax;
double max1= maxr(a,n/2);
double max2=maxr(a+(n/2),n-n/2);
if (max1>max2)
max1=lmax;
else
max2=lmax;
printf("MAX EBANA: %d",lmax);
return 0;
}
int main()
{
int a[6]={6,3,-8,1,14,-2};
funk(a,6);
imax(a,6);
return 0;
}Решение задачи: «Найти максимальный элемент массива, используя метод деления пополам»
textual
Листинг программы
int Max(int *A,int n)
{
int max=A[0];
int i;
for (i=1; i<n; i++) if (A[i]>max) max=A[i];
return max;
}
Объяснение кода листинга программы
- В функции
Maxуказывается входной аргументn, который представляет собой размер массиваA. - Переменная
maxинициализируется значением первого элемента массиваA. - Затем, в цикле
for, проходится по всем элементам массива, начиная со второго. - Если текущий элемент больше значения переменной
max, то значение переменнойmaxобновляется. - В конце функции возвращается значение переменной
max. - Функция предназначена для поиска максимального элемента в массиве
A. - Метод деления пополам не используется в данном коде.