diff --git a/Algorithm/SequentialSearch.h b/Algorithm/SequentialSearch.h index 28fd335c43899fcbae91f5f9430846a1cd45941d..2ef667d5328dce41f641451a96217a744781de0b 100644 --- a/Algorithm/SequentialSearch.h +++ b/Algorithm/SequentialSearch.h @@ -4,4 +4,20 @@ int SequentialSearch(vector& v, int k) { if (v[i] == k) return i; return -1; +} + + +/* The following is a Sentinel Search Algorithm which only performs + just one test in each loop iteration thereby reducing time complexity */ + +int BetterSequentialSearch(vector& v, int k) { + int last = v[v.size()-1]; + v[v.size()-1] = k; + int i = 0; + while (v[i]!= k) + i++; + v[v.size()-1] = last; + if(i < v.size()-1 || v[v.size()-1] == k) + return i; + return -1; } \ No newline at end of file