------
## 最终结论
```python
def find_minimum_subarray_removal(arr):
    n = len(arr)
    
    # Find the longest non-decreasing prefix
    prefix_length = 1
    for i in range(1, n):
        if arr[i] >= arr[i - 1]:
            prefix_length += 1
        else:
            break
    
    # Find the longest non-decreasing suffix
    suffix_length = 1
    for i in range(n - 2, -1, -1):
        if arr[i] <= arr[i + 1]:
            suffix_length += 1
        else:
            break
    
    # If the entire array is non-decreasing
    if prefix_length == n:
        return 0
    
    # Calculate the minimum length of subarray to remove
    min_removal = float('inf')
    
    # Check removing elements between prefix and suffix
    for i in range(prefix_length):
        for j in range(n - suffix_length, n):
            if arr[i] <= arr[j]:
                min_removal = min(min_removal, j - i - 1)
    
    # Consider removing from either end
    min_removal = min(min_removal, n - prefix_length)  # Remove from the end
    min_removal = min(min_removal, n - suffix_length)  # Remove from the start
    
    return min_removal

# Example usage:
arr = [1, 2, 3, 10, 4, 2, 3, 5]
print(find_minimum_subarray_removal(arr))  # Output: 3

arr = [5,4,3,2,1]
print(find_minimum_subarray_removal(arr))  # Output: 4

arr = [1,2,3]
print(find_minimum_subarray_removal(arr))  # Output: 0

arr = [1]
print(find_minimum_subarray_removal(arr))  # Output: 0
```