Vyxal, 11 bytes
ż-ȧZ⁽tṡfyĠ•
The pains of not having tons of array focused built-ins
Explained
ż-ȧZ⁽tṡfyĠ•
ż # The range [1, len(input)]
-ȧ # and the absolute difference with the input
Z # Zip those together
⁽tṡ # and sort that by tail - this is a work around way to group one list by the results of a function applied to it
fy # flatten and uninterleave this - this pushes the original list and the absolute differences but sorted
Ġ # group the indexes on consecutive items
• # and mold the other list to the shape of that.