Weight painting basic character. Mesh distorting when moving - Newbie
Basically your mesh get distorted because every vertex is weighted to a lot of different bones: every pose will establish a different bones influence to every vertex, causing distortions.
Every vertex should be assigned to one bone only, except where you want a "fleshy organic" deformation (in which generally you have two bones affecting the joint).

Your case is difficult to resolve because you used a lot of vertices (300.000) while generally we have less (2-5.000 can be enough for your shapes) followed by a subsurf modifier to get smooth result: in this way it's easier to weight paint the control vertices and get smooth deformation exactly as you want.

By the way you have a lot of inverted normals (select all in edit mode and recalculate normals, to get correct behaviour when shading).



This is an example of body modelled with 224 vertices (instead of 10.000) then subsurfed with 2 subdivisions (with which the vertex count goes to 6.700 more or less, but the weight painting can be done relatively to 224 vertices only). Put the subsurf modifier after the armature modifier, so to smooth every posing artifact.