KADANEOV ALGORITAM

ZA ODREĐIVANJE MAKSIMALNE SUME UZASTOPNOG PODNIZA


Za razliku od algoritma za određivanje maksimalne sume podniza prema definiciji problema koji je spor i ima kvadratnu složenost, Kadanov algoritam je brži jer je linearne složenosti.
Pretpostavimo da je dat sledeći niz celih brojeva:

{3,5,-10,-34,16 2}

određivanje maksimalne sume bi se po Kadanovom algoritmu uradilo na sledeći način:

#include < stdio.h >

int main()
{
int niz[]={ 3,5,-10,-34,16 2};
int n= sizeof(niz)/sizeof(niz[0]); //dimenzija niza
int MaxTrenutni=0; //trenutni maksimum posle završetka iteracije spoljašnje petlje
int Max=0; //maksimalni zbir od početka
/*Kroz spoljašnju petlju pomeramo tekuću poziciju za elemente niza od prve do poslednje*/
for(int tekInd=0; tekInd< n; tekInd++)
{
MaxTrenutni=MaxTrenutni+niz[tekInd]; //Kreiramo zbir za tekuću poziciju

if(MaxTrenutni>Max)
Max=MaxTrenutni;//ako je trenutni maksimum veći , ažuriramo postojeći maksimum
if(MaxTrenutni < 0)
/*U slučaju da za trenutni maksimum dobijemo negativan broj koristimo zbir od praznog podniza, koji je 0*/
MaxTrenutni = 0;
}
printf("Maksimalni zbir neprekidnog podniza je %3d", Max);
return 0;
}
Maksimalna suma podniza