|
8 | 8 |
|
9 | 9 |
|
10 | 10 | % 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 |
15 | 15 |
|
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; |
20 | 18 |
|
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)) |
27 | 22 |
|
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 |
31 | 30 | else |
32 | | - |
33 | | - ternarySearch(array,mid1+1,mid2-1,target); |
| 31 | + returnindex = -1; |
34 | 32 | end |
35 | 33 | end |
0 commit comments