How to find local maximums

Assuming your signal is perfectly clean and well-behaved

for (x=1, x< array_length-1; x++) {
    if ((array[x-1] < array[x])  &&  (array[x+1]<array[x])) {
       // local maximum
    };
     if ((array[x-1] > array[x])  &&  (array[x+1]>array[x])) {
       // local minimum
    };
   
}

but more likely

delta=0.1; // adjust as necessary
for (x=1, x< array_length-1; x++) {
    if ((array[x]-array[x-1] >delta )  &&  (array[x]-array[x+1] >delta) {
       // local maximum
    };
    if ((array[x]-array[x-1] >-delta )  &&  (array[x]-array[x+1] >-delta) {
       // local minimum
    };
}