Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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‎

Lines changed: 4 additions & 1 deletion
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
});
Lines changed: 38 additions & 39 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /