Найти максимальный элемент массива, используя метод деления пополам - 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
. - Метод деления пополам не используется в данном коде.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д