as you can see, the vertices are distributed irregularly. now I want to distribute the vertices evenly, without changing the curve or loop
The shipped Loop Tools add-on > Space option may do exactly what you want..
It can make a cubic interpolation from existing irregular points, resulting in a smooth curve fit. You can set it to 'Linear'..
.. which will be more faithful to the jumps in tangent directions created by gaps between vertices before the operation.
I'm not sure you will get a 100% semi-circle but the result will be pretty good if you use the LoopTools addon. Activate it, then press W > LoopTools > Space to make the space between each vertex equivalent. Then again press W > LoopTools and Relax. Note that you can play with the parameters on the bottom of the Tools panel on the left of the 3D View (displayed with T)