类 ArraySortedBag 可以通过继承类 ArrayBag 来实现。请在 ArraySortedBag 中完成__contains__方法,使其搜索复杂度为 O(log2(N))
时间: 2024-05-11 22:18:31 浏览: 52
可以通过以下方式实现 `ArraySortedBag` 类:
```python
from ArrayBag import ArrayBag
class ArraySortedBag(ArrayBag):
def __contains__(self, target):
# 在有序数组中进行二分查找
left = 0
right = len(self._items) - 1
while left <= right:
mid = (left + right) // 2
if self._items[mid] == target:
return True
elif self._items[mid] < target:
left = mid + 1
else:
right = mid - 1
return False
def add(self, item):
# 重载 add 方法,使得添加元素时仍然保持有序
if len(self._items) == self._size:
self._resize(2 * self._size)
index = 0
while index < len(self._items) and self._items[index] < item:
index += 1
for i in range(len(self._items)-1, index-1, -1):
self._items[i+1] = self._items[i]
self._items[index] = item
self._size += 1
```
其中 `__contains__` 方法使用二分查找实现,时间复杂度为 O(log2(N))。`add` 方法被重载,使得添加元素时仍然保持有序。
阅读全文