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
};
}