请帮我写一个Dart版本的二分查找算法
时间: 2023-08-31 07:42:56 浏览: 106
### 回答1:
好的,这是一个Dart版本的二分查找算法:
```
int binarySearch(List<int> list, int target) {
int left = 0;
int right = list.length - 1;
while (left <= right) {
int mid = left + (right - left) ~/ 2;
if (list[mid] == target) {
return mid;
} else if (list[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
```
使用方法:
```
void main() {
List<int> list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
int target = 5;
int index = binarySearch(list, target);
print(index); // Output: 4
}
```
### 回答2:
二分查找(Binary Search)是一种高效的搜索算法,适用于已经排好序的数组。以下是一个使用Dart编写的二分查找算法:
```dart
int binarySearch(List<int> arr, int target) {
int low = 0;
int high = arr.length - 1;
while (low <= high) {
int mid = (low + high) ~/ 2; // 计算中间元素的索引
if (arr[mid] == target) {
return mid; // 找到目标元素,返回索引
} else if (arr[mid] < target) {
low = mid + 1; // 目标元素在右半部分,更新区间的下界
} else {
high = mid - 1; // 目标元素在左半部分,更新区间的上界
}
}
return -1; // 未找到目标元素,返回-1
}
void main() {
List<int> arr = [1, 3, 5, 7, 9];
int target = 5;
int result = binarySearch(arr, target);
if (result != -1) {
print("目标元素 $target 的索引为 $result");
} else {
print("未找到目标元素 $target");
}
}
```
以上代码定义了一个`binarySearch`函数,接受一个已经排好序的整数数组`arr`和目标整数`target`作为参数,并返回目标元素在数组中的索引。如果未找到目标元素,则返回-1。
在`main`函数中,我们定义了一个测试用例,使用`binarySearch`函数在数组`arr`中查找整数`target`。如果找到目标元素,则输出对应的索引;如果未找到目标元素,则输出提示信息。
通过以上代码,我们使用Dart实现了一个二分查找算法。希望对你有所帮助!
### 回答3:
二分查找是一种常用的查找算法,它适用于已排序的数组或列表。下面是一个用Dart语言实现的二分查找算法:
```dart
int binarySearch(List<int> list, int target) {
int left = 0;
int right = list.length - 1;
while (left <= right) {
int mid = (left + right) ~/ 2;
if (list[mid] == target) {
return mid;
} else if (list[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
void main() {
List<int> myList = [1, 2, 3, 4, 5, 6, 7, 8, 9];
int target = 5;
int result = binarySearch(myList, target);
if (result != -1) {
print("目标元素的索引为:$result");
} else {
print("未找到目标元素");
}
}
```
该二分查找算法接受一个已排序的整数列表和目标元素作为参数。它通过不断分割列表并与目标元素进行比较来找到目标元素的索引。如果找到目标元素,则返回其索引;否则,返回-1表示未找到。
在上面的示例中,我们声明了一个整数列表`myList`和一个目标值`target`。然后,我们调用`binarySearch`函数,并将结果存储在`result`变量中。最后,根据`result`的值进行输出,显示找到目标元素的索引或未找到目标元素的消息。
希望这个Dart版本的二分查找算法对你有帮助!