The algorithm you've described is called "Binary Search." Here's a Python implementation of the binary search algorithm that returns the position of the found value or "-1" if the value is not found:

```python
def binary_search(lst, target):
    left, right = 0, len(lst) - 1

    while left <= right:
        mid = (left + right) // 2
        if lst[mid] == target:
            return mid
        elif lst[mid] < target:
            left = mid + 1
        else:
            right = mid - 1

    return -1

# Example usage
lst = [1, 3, 5, 7, 9, 11, 13]
target = 7
result = binary_search(lst, target)
print(result)  # Output: 3
```

In this code, we initialize two pointers, `left` and `right`, which represent the start and end of the list, respectively. We then enter a loop that continues as long as `left` is less than or equal to `right`. Inside the loop, we calculate the middle index `mid`, and compare the target value with the middle element of the list. If the target is found, we return the index. If the target is larger, we update `left` to search the right half of the list, and if it's smaller, we update `right` to search the left half. If the loop ends without finding the target, we return -1 to indicate that the value is not in the list.