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