I need to reorder several points within three groups in order for a surface from pts to work smoothly

I created a grid of points and they are at different elevations depending on the location of three attractor points. Because there are three attractor points, there are three groups consisting the points that are closest to each attractor point. I now need to create a surface from the elevated points, but the SrfGrid is ‘reading’ the points in the wrong order causing the surface to warp wildly. I first attempted to sort the points, and that is helping, but the SrfGrid still isn’t seeing them correctly.

I’ve attached my condensed GH file. You’ll see the points that are elevated in the Z and then the same points duplicated at Z=0. Disregard the pts @ z=0. I’m just trying to figure out how to create a surface from the points conforming the attractor points (which are internalized).grasshopper_forum.gh (16.3 KB)

Most of the time people use too much Voronoi

And you you don’t use it where you have to.

So here is my solution with Voronoi.
I reorder your points (I am sure you have not to do that) using this method :

Then I made a single surface. I put 3 points surely near you attractor point. You will have to use your attractor points. The Voronoi then project the curve on the single surface then Surface Split.
grasshopper_forum.gh (27.0 KB)

Edit : Surface grid need U points x say V points. So it need a rectangular grid.

Thank you Laurent! The beginning but about sorting coordinates is what I needed but I appreciate your additional help as well!

As the cutted surfaces have 4 sides it will be possible to fit a surface on then, I mean a rhino surface not a brep.
You could use that