This condition is associated with differentiation. The (negative) difference between adjacent elements must be stable or increase with increasing index. Multiply the condition by -1 and you get
a[i+1]-a[i] => a[i+2]-a[i+1]
or
0 => (a[i+2]-a[i+1])- (a[i+1]-a[i])
Thus, the second derivative must be 0 or negative, which coincides with the fact that the first derivative remains unchanged or changes downward, for example, part of the upper half of the circle. This does not mean that the first derivative itself should start positive or negative, just so that it never changes up.
The problem algorithmically is that it cannot be simple, since you never compare only 2 list items, you will have to compare three at a time (i, i + 1, i + 2).
So, the only thing you know, except for random permutations, is given in Klas's answer (the values first rise, if at all, and then fall, if at all), but it is not a sufficient condition, since you can have a positive 2nd derivative in its two sets (rise / fall).
So, is there a solution much faster than random shuffling? I can only think of the following argument (similar to Klas's answer). For a given vector, a solution is more likely if you divide the data into the 1st segment, which is growing or stable (not falling), and the second, which is falling or stable (not rising), and not one is empty. Probably, one could argue that the two segments should be approximately equal in size. A growing segment should have data that is closer to each other, and a falling segment should contain data that is further apart. Thus, you can start with the average value and look for data close to it, transfer them to the first set, then search for more widely spaced data and move them to the second set. Thus, a histogram can help.
[4 7 10 2] → diff [3 3 -8] → 2diff [0 -11]