Initial commit

This commit is contained in:
Volodymyr Orlov
2019-05-28 17:46:03 -07:00
parent f0275e2fc4
commit f4d3a80490
14 changed files with 285 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
pub mod sort;
+64
View File
@@ -0,0 +1,64 @@
use std::cmp::Ordering;
pub struct HeapSelect<T: std::cmp::Ord> {
k: usize,
n: usize,
sorted: bool,
heap: Vec<T>
}
impl<T: std::cmp::Ord> HeapSelect<T> {
pub fn from_vec(vec: Vec<T>) -> HeapSelect<T> {
HeapSelect{
k: vec.len(),
n: 0,
sorted: false,
heap: vec
}
}
pub fn add(&mut self, element: T) {
self.sorted = false;
if self.n < self.k {
self.heap[self.n] = element;
self.n += 1;
if self.n == self.k {
self.heapify();
}
} else {
self.n += 1;
if element.cmp(&self.heap[0]) == Ordering::Less {
self.heap[0] = element;
}
}
}
pub fn heapify(&mut self){
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_from_vec() {
let heap = HeapSelect::from_vec(vec!(1, 2, 3));
assert_eq!(3, heap.k);
}
#[test]
fn test_add() {
let mut heap = HeapSelect::from_vec(Vec::<i32>::new());
heap.add(1);
heap.add(2);
heap.add(3);
assert_eq!(3, heap.n);
}
}
+1
View File
@@ -0,0 +1 @@
pub mod heap_select;