请大家分别使用顺序查找和折半查找完成,在10个数据中查找某一数据的操作。注意,查找表中数值要在终端输入,待查数据也要在终端输入。查找成功需要返回数据位置,查找不成功要有提示语句。
时间: 2024-10-27 16:15:09 浏览: 5
顺序查找和折半查找
5星 · 资源好评率100%
在序列搜索算法中,顺序查找和折半查找是两种常见的策略。
**顺序查找(Linear Search)**:
1. 首先,从列表的第一个元素开始(索引为0)。
2. 输入用户想要查找的数据。
3. 比较当前元素是否等于目标值。如果相等,则返回当前位置(索引),表示找到。
4. 如果当前元素小于目标值,说明目标可能在剩余未检查的部分,移动到下一个元素继续比较。
5. 如果遍历完整个列表都没有找到,表示数据不存在,输出提示信息"数据未找到"。
以下是顺序查找的伪代码示例:
```
index = 0
data_list = [获取用户输入的10个数据]
while index < len(data_list) and data_list[index] != 待查数据:
index += 1
if index == len(data_list):
print("数据未找到")
else:
print("数据在第", index, "位")
```
**折半查找(Binary Search)**:
1. 折半查找适用于已经排序的数组。
2. 初始化左指针`left = 0`,右指针`right = len(data_list) - 1`。
3. 计算中间索引`mid = (left + right) // 2`。
4. 输入用户想要查找的数据。
5. 比较目标值和中间值。若相等,返回`mid`;若目标值小于中间值,更新右指针为`mid - 1`;反之,更新左指针为`mid + 1`。
6. 当左指针大于右指针时,数据不存在,输出提示信息"数据未找到"。
以下是折半查找的伪代码示例:
```
def binary_search(data_list, target):
left, right = 0, len(data_list) - 1
while left <= right:
mid = (left + right) // 2
if data_list[mid] == target:
return mid
elif data_list[mid] < target:
left = mid + 1
else:
right = mid - 1
return "数据未找到"
sorted_data_list = [获取用户输入的已排序的10个数据]
print(binary_search(sorted_data_list, 待查数据))
```
阅读全文