Skip to content

Commit 74f6032

Browse files
committed
add linear search
1 parent c0af2a1 commit 74f6032

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

src/searching/mod.rs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,42 @@ pub fn binary_search<T>(item: T, arr: &[T]) -> i32
2525

2626
left as i32
2727
}
28+
29+
pub fn linear_search<T>(item: T, arr: &[T]) -> i32
30+
where T: cmp::PartialEq
31+
{
32+
let length = arr.len();
33+
34+
for i in 0..length {
35+
if item == arr[i] {
36+
return i as i32;
37+
}
38+
}
39+
40+
return -1;
41+
}
42+
43+
#[cfg(test)]
44+
mod tests {
45+
#[test]
46+
fn linear() {
47+
use searching;
48+
let index = searching::linear_search("a", &vec!["a", "b", "c", "d", "google", "zoo"]);
49+
assert_eq!(index, 0);
50+
51+
let mut index = searching::linear_search(4, &vec![1, 2, 3, 4]);
52+
assert_eq!(index, 3);
53+
54+
index = searching::linear_search(3, &vec![1, 2, 3, 4]);
55+
assert_eq!(index, 2);
56+
57+
index = searching::linear_search(2, &vec![1, 2, 3, 4]);
58+
assert_eq!(index, 1);
59+
60+
index = searching::linear_search(1, &vec![1, 2, 3, 4]);
61+
assert_eq!(index, 0);
62+
63+
index = searching::linear_search(5, &vec![1, 2, 3, 4]);
64+
assert_eq!(index, -1);
65+
}
66+
}

0 commit comments

Comments
 (0)