1
는 내가이 관용적 녹 생각하지 않습니다하지만, 어떻게 전체 벡터에서 작동하도록 이해 :벡터의 하위 집합에서 어떻게 작동합니까?
fn median(v: &Vec<u32>) -> f32 {
let count = v.len();
if count % 2 == 1 {
v[count/2] as f32
} else {
(v[count/2] as f32 + v[count/2 - 1] as f32)/2.0
}
}
fn main() {
let mut v1 = vec![3, 7, 8, 5, 12, 14, 21, 13, 18];
v1.sort();
println!("{:.*}", 1, median(&v1));
}
그러나 나는이 벡터의 절반 만에 작동하려면? 예를 들어 첫 번째 사 분위수는 하위 절반의 중앙값이며 세 번째 분위는 상위 절반의 중앙값입니다. 내 첫 번째 생각은 두 개의 새로운 벡터를 만드는 것이었지만, 그것은 옳은 것처럼 보였습니다.
"절반"벡터를 얻으려면 어떻게해야합니까? 언급
반복자를 전달하는 방법에 대해서 [여기] (http://stackoverflow.com/questions/34969902/how-to-write-a-rust-function-that-takes-aniterator)를 확인하십시오. 첫 번째 질문은 슬라이스를 취할 수 있습니다. 예를 들어'let slice = & v1 [0..v1.len()/2]' – Jack
[질문 당 한 가지 질문] (http://meta.stackexchange.com/q/39223/281829). "반복자 허용"질문에 이미 중복 된 항목이 있으므로 삭제 한 것입니다. – Shepmaster