Skip to content

Commit d53d76c

Browse files
authored
Merge pull request #84 from MaximSmolskiy/fix_ternary_search
Fix ternary search
2 parents ee918da + 2fb6b90 commit d53d76c

File tree

1 file changed

+17
-19
lines changed

1 file changed

+17
-19
lines changed

algorithms/Searching/ternarySearch.m

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,28 +8,26 @@
88

99

1010
% function for ternary search
11-
function [numComparisons, returnindex ] = ternarySearch( array, target, firstIndex , lastIndex)
12-
numComparisons = 0;
13-
lastIndex = length(array);
14-
firstIndex = 1;
11+
function returnindex = ternarySearch( array, target, firstIndex , lastIndex)
12+
if(lastIndex >= firstIndex)
13+
mid1 = firstIndex + fix((lastIndex - firstIndex) / 3); %calculating mid1
14+
mid2 = lastIndex - fix((lastIndex - firstIndex)/ 3); %calculating mid2
1515

16-
mid1 = firstIndex + (lastIndex - 1) / 3; %calculating mid1
17-
mid2 = lastIndex - (lastIndex - 1)/ 3; %calculating mid1
18-
xmid1 = 0;
19-
xmid2 = 0;
16+
if(array(mid1)== target)
17+
returnindex = mid1;
2018

21-
if(array(mid1)== target)
22-
xmid1 = mid1;
23-
24-
elseif(array(mid2) == target)
25-
xmid2 = mid2;
26-
elseif(target > array(mid1))
19+
elseif(array(mid2) == target)
20+
returnindex = mid2;
21+
elseif(target < array(mid1))
2722

28-
ternarySearch(array,mid2+1,lastIndex, target);
29-
elseif(target < array(mid1))
30-
ternarySearch(array,firstIndex,mid1 - 1, target);
23+
returnindex = ternarySearch(array,target,firstIndex, mid1-1);
24+
elseif(target > array(mid2))
25+
returnindex = ternarySearch(array,target,mid2 + 1, lastIndex);
26+
else
27+
28+
returnindex = ternarySearch(array,target,mid1+1,mid2-1);
29+
end
3130
else
32-
33-
ternarySearch(array,mid1+1,mid2-1,target);
31+
returnindex = -1;
3432
end
3533
end

0 commit comments

Comments
 (0)