Який наразі рекомендований метод сортування значень у векторі?
Який наразі рекомендований метод сортування значень у векторі?
Відповіді:
sort_by
метод, який дозволяє повністю користувацький предикат.
self.sort()
== self.sort_by(|a, b| a.cmp(b))
.
.sort()
якщо тип T
реалізує cmp::Ord
ознаку.
sort_unstable
це трохи швидше, але можете змінити порядок "рівних" елементів
Хоча запропоновані вище рішення можуть сортувати вектори цілих чисел, у мене були проблеми з сортуванням векторів плаваючих значень.
Найпростішим рішенням було використання ящика для швидкого сортування, який також може сортувати поплавці. Ящик швидкого сортування може також сортувати інші вектори будь-якого типу, а також реалізує методи сортування за допомогою порівнянь (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 у масиві, ви можете написати більш ретельну функцію порівняння.)