2 added 32 characters in body

# Java (OpenJDK 8), 9498 bytes

int f(int n,int[]a){for(int s=1,i=1,x=a[n];;n+=ix=a[n];;n+=i++*s,s=-s)if(0<=n&n<a.length&&a[n]>x)return a[n];}


Checks the indices in the order specified by the partial sums of the following sum:

initial value + 1 - 2 + 3 - 4 + 5 - 6 + ...


# Java, 94 bytes

int f(int n,int[]a){for(int s=1,i=1,x=a[n];;n+=i,s=-s)if(0<=n&n<a.length&&a[n]>x)return a[n];}


Try it online!

Checks the indices in the order specified by the partial sums of the following sum:

initial value + 1 - 2 + 3 - 4 + 5 - 6 + ...


# Java (OpenJDK 8), 98 bytes

int f(int n,int[]a){for(int s=1,i=1,x=a[n];;n+=i++*s,s=-s)if(0<=n&n<a.length&&a[n]>x)return a[n];}


Try it online!

Checks the indices in the order specified by the partial sums of the following sum:

initial value + 1 - 2 + 3 - 4 + 5 - 6 + ...

1

# Java, 94 bytes

int f(int n,int[]a){for(int s=1,i=1,x=a[n];;n+=i,s=-s)if(0<=n&n<a.length&&a[n]>x)return a[n];}


Try it online!

Checks the indices in the order specified by the partial sums of the following sum:

initial value + 1 - 2 + 3 - 4 + 5 - 6 + ...