interesting question. is the data isn't sorted?
the most obvious way is to sum each value and check when the sum is equal to the percentage you desire. but you want a more efficient solution than that, right?
I'm not a math guru, but depending on whether the data is dynamic or static, one way i could think of is to calculate beforehand some best fit curve and perform integration on the resulting equation. you'd solve the integral for x, given the sum (which would represent the percentage). So if the data is static, you'd do the curve fitting offline. In the shader, it would be a matter of plugging in into the equation. This is probably not practical for dynamic data though.
i'll give it more thought.