percentile_rank/
lib.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
pub fn percentile_rank(mut data: Vec<u64>) {
    let data_len = data.len();
    let percentil = 100;
    data.sort();
    println!("data :{:?}", data);
    let mut rank = (percentil as f32/100.0 * data_len as f32) as usize;
    let mut max_indx = data_len as usize - 1 as usize;  
    let score: u64  = data[max_indx];
    let mut position = 1;
   
   
    println!("rank {:?}, score: {}, position: {:?}, percentile: {:?}", rank, score, position, percentil);
   
    while max_indx!= 0{
        let percentile = (rank as f32 /data_len as f32  * 100.0) as u8;
        rank = rank -1;
        if data[max_indx] == data[max_indx -1]{
            println!("rank {:?}, score: {}, position: {:?}, percentile: {:?}", rank, data[max_indx -1], position, percentile);
        } else {
            position = position + 1;
            println!("rank {:?}, score: {}, position: {:?}, percentile: {:?}", rank, data[max_indx -1], position, percentile);
        } 
        max_indx -= 1 ;
   }
    
}