编写一个程序,分别用顺序查找和折半查找实现对线性表中数据元素的查找(假设线性表中的元素都是int型)。主程序输入数据元素的值
时间: 2024-05-05 13:21:55 浏览: 62
C语言实现顺序表的顺序查找和折半查找
顺序查找代码如下:
```python
def sequential_search(lst, value):
"""
顺序查找
:param lst: 待查找的线性表
:param value: 待查找的元素值
:return: 元素在线性表中的位置,若不存在则返回-1
"""
for i in range(len(lst)):
if lst[i] == value:
return i
return -1
```
折半查找代码如下:
```python
def binary_search(lst, value):
"""
折半查找
:param lst: 待查找的有序线性表
:param value: 待查找的元素值
:return: 元素在线性表中的位置,若不存在则返回-1
"""
low, high = 0, len(lst) - 1
while low <= high:
mid = (low + high) // 2
if lst[mid] == value:
return mid
elif lst[mid] < value:
low = mid + 1
else:
high = mid - 1
return -1
```
主程序可以如下编写:
```python
if __name__ == '__main__':
lst = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
value = int(input("请输入待查找的元素值:"))
index = sequential_search(lst, value)
if index != -1:
print("元素在线性表中的位置为:", index)
else:
print("元素不在线性表中!")
index = binary_search(lst, value)
if index != -1:
print("元素在线性表中的位置为:", index)
else:
print("元素不在线性表中!")
```
假设线性表中的数据为 `[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]`,如果输入待查找的元素值为 `11`,则输出结果如下:
```
请输入待查找的元素值:11
元素在线性表中的位置为: 5
元素在线性表中的位置为: 5
```
阅读全文