|
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