在Dart中,没有专门用于对排序列表进行二进制搜索的标准库函数。然而,您可以使用内置的List
类提供的indexOf()
方法来执行二进制搜索。以下是一个示例代码,演示如何使用二进制搜索在排序列表中查找一个元素:
int binarySearch(List<int> sortedList, int target) {
int min = 0;
int max = sortedList.length - 1;
while (min <= max) {
int mid = min + ((max - min) ~/ 2); // 取中间位置
if (sortedList[mid] == target) {
return mid; // 找到目标元素,返回索引
} else if (sortedList[mid] < target) {
min = mid + 1; // 目标元素在右侧
} else {
max = mid - 1; // 目标元素在左侧
}
}
return -1; // 没有找到目标元素
}
void main() {
List<int> sortedList = [1, 3, 5, 7, 9, 11, 13];
int target = 7;
int index = binarySearch(sortedList, target);
if (index != -1) {
print('目标元素 $target 的索引为 $index');
} else {
print('未找到目标元素 $target');
}
}
上述代码中,binarySearch()
函数通过迭代方式实现了二进制搜索算法。它接受一个已排序的整数列表 sortedList
和目标元素 target
,并返回目标元素在列表中的索引(如果存在)。如果未找到目标元素,则返回 -1。
请注意,这只是一个基本示例,用于说明如何实现二进制搜索。在实际应用中,您可能需要根据具体情况进行修改和优化。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云