请详细解释什么是二进制搜索算法，并使用Python代码示例来说明，最后要求输出格式为"Number of elements: X, Mid element: Y, Target element: Z"的统计信息。
user
二进制搜索算法是一种在有序数组中查找特定元素的高效算法。其基本思想是通过将数组分成两半，逐步缩小搜索范围，最终找到目标元素或确定其不存在。

### 步骤
1. 初始化两个指针：`low` 和 `high`，分别指向数组的开始和结束。
2. 计算中间位置 `mid`。
3. 比较 `mid` 位置的元素与目标元素：
   - 如果 `mid` 位置的元素等于目标元素，则搜索成功，返回 `mid`。
   - 如果 `mid` 位置的元素大于目标元素，则在前半部分搜索，更新 `high` 为 `mid - 1`。
   - 如果 `mid` 位置的元素小于目标元素，则在后半部分搜索，更新 `low` 为 `mid + 1`。
4. 重复上述步骤，直到 `low` 超过 `high`，此时搜索失败，返回 -1。

### Python代码示例

```python
def binary_search(arr, target):
    low, high = 0, len(arr) - 1
    while low <= high:
        mid = (low + high) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            low = mid + 1
        else:
            high = mid - 1
    return -1

# 示例数组和目标元素
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
target = 6

# 执行二分搜索
result = binary_search(arr, target)

# 输出统计信息
print(f"Number of elements: {len(arr)}, Mid element: {arr[(len(arr) - 1) // 2]}, Target element: {target}")
```

### 输出
```
Number of elements: 9, Mid element: 5, Target element: 6
```

这个统计信息格式包含了数组中的元素数量、中间元素以及目标元素。
assistant