벡터에서 값을 정렬하기 위해 현재 권장되는 방법은 무엇입니까?
답변:
sort_by
A는 완전히 사용자 정의 술어 수도 방법.
self.sort()
== self.sort_by(|a, b| a.cmp(b))
.
.sort()
유형 T
이 cmp::Ord
특성을 구현하는 경우 호출 할 수 있습니다 .
sort_unstable
는 조금 더 빨리,하지만 "동일한"요소의 순서를 변경 할 수
위에서 제안한 솔루션은 정수 벡터를 정렬 할 수 있지만 부동 벡터를 정렬하는 데 문제가있었습니다.
가장 간단한 해결책은 수레를 정렬 할 수 있는 quickersort crate 를 사용하는 것 입니다. quickersort 크레이트는 또한 모든 유형의 다른 벡터를 정렬 할 수 있으며 비교 (sort_by)를 사용하여 정렬하는 방법도 구현합니다.
다음은 Rust 코드입니다.
extern crate quickersort;
//let's create the vector with the values
let mut vals = Vec::new();
vals.push(31.2);
vals.push(31.2);
vals.push(10.0);
vals.push(100.4);
vals.push(4.1);
quickersort::sort_floats(&mut vals[..]); // sort the vector
v.sort_by(|a, b| a.partial_cmp(b).unwrap_or(Ordering::Equal))
플로트와 함께 작동해야합니다. (배열에서 NaN으로 수행하려는 작업에 따라보다 신중한 비교 함수를 작성할 수 있습니다.)