I imagine that you are using a Box emitter in X, Y and Z to spread your characters across the 3D frame. This will result in all kinds of crazy overlaps because your characters are being randomly placed in a volume; no one is standing on the floor.
I think the easiest solve is to have Particular handle the z-sorting for you by setting up your scene so everyone is standing on a floor, then tilting the floor up.
I’m assuming you’re using a Sprite particle type, and that your particles are set to face the camera.
Set your Box emitter size to XYZ Individual. Set the Emitter Size X (across the screen) and the Emitter Size Z (in and out of the screen) to something large — maybe the width of your comp or larger. Set the Emitter Size Y to 0. You’ll see all your characters standing on a floor and properly z-sorted — but they will all be on a line, not spread across the entire height of your comp. Set the Emitter’s X Rotation to however steep you need (maybe 40 degrees) to tilt the “floor” up and cover the comp.