Skip to content

Commit e3f3ff3

Browse files
committed
--fix : eslint & coverage 100%
1 parent a83dd6f commit e3f3ff3

File tree

2 files changed

+42
-40
lines changed

2 files changed

+42
-40
lines changed

src/_Searching_/TernarySearch/TernarySearch.test.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,14 @@ describe('Ternary Search', () => {
2424
describe('When element to find is at random position ', () => {
2525
it('Ternary search with Loop', () => {
2626
expect(ternarySearch(array, 3)).toEqual(2);
27+
expect(ternarySearch(array, 5)).toEqual(4);
2728
});
2829
it('Ternary serach with recursion', () => {
2930
expect(ternarySearchRecursive(array, low, high, 4)).toEqual(3);
3031
});
32+
it('Ternary serach with recursion', () => {
33+
expect(ternarySearchRecursive(array, low, high, 5)).toEqual(4);
34+
});
3135
});
3236
describe('When element to find is no present in array ', () => {
3337
it('Ternary search with Loop', () => {
@@ -37,5 +41,4 @@ describe('Ternary Search', () => {
3741
expect(ternarySearchRecursive(array, low, high, 10)).toEqual(null);
3842
});
3943
});
40-
4144
});
+38-39
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,52 @@
11
/**
22
* Note: Array must be sorted for ternary search
3-
* Complexity:
3+
* Complexity:
44
* Worst case time complexity: O(log N)
55
* Average case time complexity: O(log N)
66
* Best case time complexity: O(1)
77
* Space complexity: O(1)
88
*/
9-
function ternarySearch(arr, key){
10-
let low = 0;
11-
let high = arr.length - 1;
12-
while(low <= high){
13-
let lowMiddle = low + Math.floor((high - low) / 3);
14-
let highMiddle = low + 2 * Math.floor((high - low) / 3);
15-
if(key == arr[low]){
16-
return low;
17-
} else if(key == arr[high]){
18-
return high;
19-
} else if(key <= arr[lowMiddle]){
20-
high = lowMiddle;
21-
} else if(key > arr[lowMiddle] && key <= arr[highMiddle]){
22-
low = lowMiddle + 1;
23-
high = highMiddle;
24-
} else {
25-
low = highMiddle + 1;
26-
}
9+
function ternarySearch(arr, key) {
10+
let low = 0;
11+
let high = arr.length - 1;
12+
while (low <= high) {
13+
const lowMiddle = low + Math.floor((high - low) / 3);
14+
const highMiddle = low + 2 * Math.floor((high - low) / 3);
15+
if (key === arr[low]) {
16+
return low;
17+
} if (key === arr[high]) {
18+
return high;
19+
} if (key <= arr[lowMiddle]) {
20+
high = lowMiddle;
21+
} else if (key > arr[lowMiddle] && key <= arr[highMiddle]) {
22+
low = lowMiddle + 1;
23+
high = highMiddle;
24+
} else {
25+
low = highMiddle + 1;
2726
}
28-
return null;
27+
}
28+
return null;
2929
}
3030

31-
function ternarySearchRecursive(arr, low, high, key){
32-
if(high >= low){
33-
let highMiddle = low + 2 * Math.floor((high - low) / 3);
34-
let lowMiddle = low + Math.floor((high - low) / 3);
35-
if(key === arr[lowMiddle]){
36-
return lowMiddle;
37-
} else if(key === arr[highMiddle]){
38-
return highMiddle;
39-
} else if(key < arr[lowMiddle]){
40-
return ternarySearchRecursive(arr, low, lowMiddle - 1, key);
41-
} else if(key > arr[lowMiddle] && key < arr[highMiddle]){
42-
return ternarySearchRecursive(arr, lowMiddle + 1, highMiddle - 1, key);
43-
} else {
44-
return ternarySearchRecursive(arr, highMiddle + 1, high, key);
45-
}
46-
}
47-
return null;
31+
function ternarySearchRecursive(arr, low, high, key) {
32+
if (high >= low) {
33+
const highMiddle = low + 2 * Math.floor((high - low) / 3);
34+
const lowMiddle = low + Math.floor((high - low) / 3);
35+
if (key === arr[lowMiddle]) {
36+
return lowMiddle;
37+
} if (key === arr[highMiddle]) {
38+
return highMiddle;
39+
} if (key < arr[lowMiddle]) {
40+
return ternarySearchRecursive(arr, low, lowMiddle - 1, key);
41+
} if (key > arr[lowMiddle] && key < arr[highMiddle]) {
42+
return ternarySearchRecursive(arr, lowMiddle + 1, highMiddle - 1, key);
43+
}
44+
return ternarySearchRecursive(arr, highMiddle + 1, high, key);
45+
}
46+
return null;
4847
}
4948

5049
module.exports = {
51-
ternarySearch,
52-
ternarySearchRecursive
50+
ternarySearch,
51+
ternarySearchRecursive,
5352
};

0 commit comments

Comments
 (0)